我想从同一个类中的其他函数访问线程。例如
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类中。
发布于 2011-11-04 21:46:53
在类级别而不是方法级别声明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类,也许您会发现它们对您的情况更有用。
发布于 2011-11-04 21:47:00
您需要将线程存储在表单的私有字段中。
您还需要弄清楚如果用户单击Start两次会发生什么情况;您可能希望检查线程是否已经在运行,或者使用线程列表。
发布于 2011-11-04 21:47:03
您可以将变量放在方法之外(将其作为字段移动到类中):
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();
}https://stackoverflow.com/questions/8010116
复制相似问题