2

我正在使用 aTimer并让它执行定期检查。如果测试条件为真,我启动一个线程并让它做它必须做的事情。

如果在该线程中我想更改我正在使用的 UI InvokeOnMainThread()。但是由于线程是从Timer已经是单独线程的线程触发的,因此InvokeOnMainThread()将在 Timer 的线程上调用事物,而不是在真正的主线程上调用。我通过打两个InvokeOnMainThread()电话来解决这个问题。

这是按预期工作还是 Mono 框架中的错误?主线程是定义为触发当前线程的线程还是应该返回“根”线程?

4

1 回答 1

1

NSObject.InvokeOnMainThread主要是performSelectorOnMainThread:withObject:waitUntilDone:的包装器:

从文档中引用:

您可以使用此方法将消息传递到应用程序的主线程。主线程包含应用程序的主运行循环,是 NSApplication 对象接收事件的地方。

如果您在http://bugzilla.xamarin.com上填写错误报告以及独立的测试用例,我们可以对其进行更深入的研究(看起来很奇怪) 。

于 2011-11-30T14:21:05.953 回答