110,561
社区成员
发帖
与我相关
我的任务
分享
this.Invoke(new MethodInvoker(() => { timer1.Start(); }));
this.Invoke(
(MethodInvoker)delegate
{
timer1.Start();
});
另外也可以在构造函数中写上
CheckForIllegalCrossThreadCalls=false;来取消线程安全检测this.Invoke(() => { timer.Start(); });
报错了:
System.Timers.Timer timer;
public void TimeTest()
{
timer = new System.Timers.Timer();
timer.Interval = 1000;
timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
timer.Start();
Console.ReadLine();
}
void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
Console.WriteLine("timer 停止啦");
Thread t = new Thread(new ThreadStart(() => { Thread.Sleep(1000); timer.Start(); Console.WriteLine("timer 启动啦"); }));
t.Start();
timer.Stop();
}
测试可以。private void timer_Tick(object sender, EventArgs e)
{
timer.Stop();
if (Thread == null)
{
Thread = new System.Threading.Thread(DownloadInfo);
Thread.Start();
}
else
{
Thread.Abort();
Thread = new System.Threading.Thread(DownloadInfo);
Thread.Start();
}
}
private void DownloadInfo()
{
System.Threading.Thread.Sleep(10000);//相当于函数执行了十秒
timer.Start();//这次Start不能触发Tick
}