.Post()を介してAsyncOperationによって呼び出されるUpdate()メソッドがあります。その関数にMessageBoxを配置すると、複数のメッセージボックスが表示され、その理由を理解しようとしています。
メッセージボックスは、「OK」がクリックされるまでUpdate()の実行を停止する必要がありますが、.Post()が原因で、Update()が再入力され、前のメッセージボックスが閉じられる前に次のメッセージボックスが表示されます。
私が最初に考えたのは、SyncLockをUpdate()に配置して、同時に実行できないようにすることでしたが、効果はありませんでした。メッセージボックスに.ManagedThreadIDを出力すると、すべての呼び出しが同じスレッドIDを持つため、SyncLockは異なるスレッドのみをブロックするため、効果がないように見えます。
それで、誰かがここで何が起こっているのか説明できますか?1つのスレッドで同じ機能を同時に実行するにはどうすればよいですか?