我有一个用户控件,其中包含计时器。当计时器事件运行时,它将调用一些线程。
用户控件
class MyControl
{
public Timer iTime
{
get;
set;
}
Timer tmr;
public MyControl
{
tmr = new Timer();
}
// Some Properties
}
}
主窗体
class MyForm
{
Thread thd;
MyControl cls = new MyClass();
cls.iTime.Tick += new EventHandler(iTime_Tick);
void iTime_Tick(object sender, EventArgs e)
{
thd = new Thread(delegate() { doWork(1); });
thd.Start();
thd = new Thread(delegate() { doOtherJob(); });
thd.Start();
}
delegate void notif(int Param1);
void Job(int Param1)
{
if (this.InvokeRequired)
{
notif handler = new notif(notifParam);
this.Invoke(handler, new object[] { Param1 });
}
else
{
// Other Process
}
}
private void Logout()
{
cls.iTime.Stop();
cls.iTime.Enabled = false;
cls.iTime.Tick -= new EventHandler(iTime_Tick);
thd.abort();
thd.join();
}
}
如何在计时器中终止线程?即使取消订阅计时器事件或关闭表单,线程仍然会运行。