我想要使用System.Windows.Forms.Timer
来确保事件在我创建的Excel插件的UI线程上触发。我构建了计时器如下:System.Windows.Forms.Timer not firing
private System.Windows.Forms.Timer _timer;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
Debug.WriteLine("ThisAddIn_Startup:" + Thread.CurrentThread.ManagedThreadId);
_timer = new System.Windows.Forms.Timer();
_timer.Tick += new EventHandler(TimerEventHandler);
_timer.Interval = 500;
}
计时器由一个COM事件从库解雇我使用:
private void OnEvent()
{
_timer.Start();
}
然后我想到_timer
调用下面的方法时,它蜱:
public void TimerEventHandler(object sender, EventArgs args)
{
_timer.Stop();
Debug.WriteLine("Tick: " + Thread.CurrentThread.ManagedThreadId);
}
据我了解,当我创建的加载项线程定时器,即使它是从另一个线程(COM事件在这种情况下)开始,就应该解雇的线程上,它WA s创建,即插件线程。但是,这不会发生。
我在过去编写的RTDServer
(as outlined by Kenny Kerr)中实现了这个确切的机制,它按预期工作,但在这种情况下_timer
从不打勾。
我也读过other SO articles指向相同的行为,不知道我的插件设置有什么不同?
编辑: OnEvent()方法被激发。
是您的事件onEvent解雇了吗? – Ehsan
是的,事件发生。 –
你有什么异常吗? – Ehsan