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 に答える