我需要向GUI线程发送消息,GUI线程在下次空闲时应该处理。此消息可以来自GUI线程或后台线程。
我尝试了MachPort / Notification的组合。但是,当我做一个
[[NSNotificationQueue defaultQueue] enqueueNotification: my_notify postingStyle: NSPostASAP];
如果有模态对话框,则不会调度此项,我必须在处理之前关闭对话框,因此这对我来说无法使用。
在菜单选择或实时调整大小期间不处理消息是可以的,但模态对话框有点太多延迟。
答案 0 :(得分:0)
简答:不要使用模态对话框。
答案很长:模态对话框由名为NSModalPanelRunLoopMode
的特殊运行循环模式处理,请参阅here。
要安排一个电话,一种方法是使用该文件中解释的performSelectorOnMainThread:withObject:waitUntilDone:modes:
;不要忘记在那里指定模态模式和默认模式。
您也可以使用NSNotificationCenter
并指定运行循环模式,请参阅the discussion here。但是从线程环境中使用NSNotificationCenter
来开始使用here是很棘手的,所以我不推荐它。
在10.6上,您还可以使用dispatch_async
。