1

我需要向 GUI 线程发送消息,下次 GUI 线程空闲时应该处理这些消息。此消息可以来自 GUI 线程或后台线程。

我尝试了 MachPort/Notification 的组合。但是当我做一个

[[NSNotificationQueue defaultQueue] enqueueNotification: my_notify postingStyle: NSPostASAP];

如果有模态对话框,则不会调度此对话框,我必须在处理对话框之前关闭对话框,因此这对我来说不可用。

在菜单选择或实时调整大小期间不处理消息是可以的,但模态对话框有点延迟。

4

1 回答 1

0

简短回答:不要使用模式对话框。

长答案:模态对话框由称为 的特殊运行循环模式处理NSModalPanelRunLoopMode,请参见此处。要安排通话,一种方法是使用performSelectorOnMainThread:withObject:waitUntilDone:modes:该文档中的说明;不要忘记在那里指定模态模式和默认模式。

您还可以使用NSNotificationCenter和指定运行循环模式,请参阅此处的讨论。但是从这里NSNotificationCenter描述的线程环境开始使用是很棘手的,所以我不推荐它。

在 10.6 上,您还可以使用dispatch_async.

于 2010-08-12T00:26:11.613 回答