从其他线程调用主线程中的方法
我试图在C#应用程序中同时运行3个级别的计时器,例如:
T1将在应用程序的开始运行,然后在其Tick事件中,T2将启动,然后在T2的tick事件上,T3将启动。 最后,在T3的tick事件中,应该在应用程序的主线程中完成某些操作
我的问题似乎是主线程中的代码在被其他线程调用时不起作用
我应该怎么做让主线程通过其他线程的调用来运行它的函数?
最有可能的问题是你的主线程需要调用。 如果要在调试器中运行程序,则应该看到跨线程操作exception,但在运行时禁用此exception检查。
如果你的主线程是一个表单,你可以用这个简短的代码处理它:
if (InvokeRequired) { this.Invoke(new Action(() => MyFunction())); return; }
或.NET 2.0
this.Invoke((MethodInvoker) delegate {MyFunction();});
编辑:对于控制台应用程序,您可以尝试以下:
var mydelegate = new Action
- 即使我正在检查,也从EventLog.CreateEventSource接收“…已经注册…”!EventLog.SourceExists
- 带伪造的unit testing中的Visual Studio 2015 InvalidProgramException
- 如何告诉inheritance类不调用其基类’无参数构造函数?
- 如何阻止文本框中的第一个字符成为’。’?
- 以编程方式禁用CE窗口动画?
- 将ListView的SelectedItem绑定到ViewModel
- 百万插入:SqlBulkCopy超时
- 如何在WPF应用程序中放置自定义Windows窗体控件?
- SpVoice和SpeechSynthesizer有什么区别