如何从其他函数访问线程名
本文关键字:访问 线程 函数 其他 | 更新日期: 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();
}