1

一連の操作を次々と実行します。

基本的な構造は

フォームのメソッド > を使用してRun()呼び出すManager.DoStuff()await Manager.DoStuff();

Manager.DoStuff()async Task ...

したがって、UI スレッドをブロックすることは決して期待できません。ほとんどの場合はそうではありません。DoStuffメソッドには次のようなものが含まれています。

var someTask = Something.BigTask();
var someTask2 = Something2.BigTask();
var someTask3 = Something3.BigTask();

await Task.WhenAll(someTask, someTask2, someTask3)

そしていくつかの個々のもの、例えば:

await SomethingElse.BigTask();

しかし、特定のスレッドに到達すると、UI スレッドが停止し、最終的にメッセージをポンピングしていないという例外が発生します。

方法は同じです。async Task SomeMethod()

私が考えることができる唯一のことはInvoke、フォームで使用して多くのメッセージを記録することです。これは影響しますか?もしそうなら、それが壊れないようにする方法を見つける必要があります。

おそらくawait、UI スレッドから非同期タスクを実行している場合、その非同期タスク内で UI スレッドをブロックするものは何もないはずです。

awaitコードがなくなるまでの最上位レベルの呼び出しの後、最初の Run() メソッドは単純に終了します。それが実行する必要がある最後のタスクだからです。

何か案は?

4

1 に答える 1