我正在使用Timer
并让它执行定期检查。如果测试条件为真,我启动一个线程让它做它必须做的事情。
如果在该线程内,我想更改我正在使用的InvokeOnMainThread()
用户界面。但是由于线程是从Timer
触发的,它已经是一个单独的线程,InvokeOnMainThread()
将调用Timer的线程而不是真正的主线程。我通过装箱两个InvokeOnMainThread()
电话来解决这个问题。
这是按预期工作还是Mono框架中的错误? 主线程是定义为触发当前线程还是应该返回“根”线程?
答案 0 :(得分:1)
NSObject.InvokeOnMainThread
主要是performSelectorOnMainThread:withObject:waitUntilDone:
来自文档:
您可以使用此方法将消息传递到应用程序的主线程。主线程包含应用程序的主运行循环,并且是NSApplication对象接收事件的位置。
如果您填写http://bugzilla.xamarin.com的错误报告以及自包含的测试用例,我们可以深入了解它(看起来很奇怪)。