如何从其他函数访问线程名

本文关键字:访问 线程 函数 其他 | 更新日期: 2023-09-27 18:13:28

我想从同一类中的其他函数访问线程。例如

private void timer1_Tick(object sender, EventArgs e)
{
    Thread thread1 = new Thread(new ThreadStart(Send1));
    thread1.Start();
}
private void stop_btn_Click(object sender, EventArgs e)
{
     thread1.Stop();
}

我想从stop_btn_Click事件访问thead1。两个函数都在同一个类Form1中

如何从其他函数访问线程名

在类级别而不是方法级别声明private Thread thread1;

class ClassName
{
    private Thread workerThread = null;
    private void timer1_Tick(object sender, EventArgs e)
    {
        this.workerThread = new Thread(new ThreadStart(Send1));
        workerThread.Start();
    }
    private void stop_btn_Click(object sender, EventArgs e)
    {
         this.workerThread.Stop();
    }
}

通过查看方法名称timer1_Tick(),我可以假设您正在模拟计时器行为。看一下System.Timers.Timer和System.Threading.Timer类,也许你会发现它们对你的情况更有用。

您需要将线程存储在表单的私有字段中。

你还需要弄清楚如果用户点击Start两次会发生什么;您可能想要检查线程是否已经在运行,或者使用线程列表。

您可以将该变量置于方法之外(将其作为字段移动到类中):

private Thread thread1 = null;
void timer1_Tick(object sender, EventArgs e)
{
    thread1 = new Thread(new ThreadStart(Send1));
    thread1.Start();
}

private void stop_btn_Click(object sender, EventArgs e)
{
    if (thread1 != null) 
         thread1.Stop();
}