如果定时器使用的是System.Windows.Form.Timer,在一个附加线程中启动该定时器是无法进入回调的,因为System.Windows.Form.Timer是为单线程设置的。示例代码如下:
using System;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TestMultiThreadTimer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Timer tim = new Timer();
private void Form1_Load(object sender, EventArgs e)
{
//示例1:主线程启动定时器,正常进入回调
//InitTimer();
//示例2:异步线程启动定时器,无法进入回调
Task t = Task.Factory.StartNew(new Action(InitTimer));
}
private void InitTimer()
{
tim.Interval = 100;
tim.Tick += Tim_Tick;
tim.Enabled = true;
}
private void Tim_Tick(object sender, EventArgs e)
{
throw new NotImplementedException();
}
}
}