1

アプリケーションが閉じようとしているが完了していないタスクがある場合のフレームワーク サポートはありますか?

デフォルトでは、タスクはバックグラウンド スレッドのコンテキストで実行されます。タスクを完了させるだけでよい場合もあります。

Task.Factory.StartNew(() =>
                          {
                              Thread.CurrentThread.IsBackground = false;
                              Thread.Sleep(20000);
                              Thread.CurrentThread.IsBackground = true;
                          });

ただし、タスクに完了が必要な継続がある場合、これは機能しません。特に、一部のタスクが UI スレッドで実行される場合。
すべての「最終」タスクを取得し、アプリケーションの終了を延期することが可能ですWhenAll()
しかし、async/await を使用したときに同じことを行う方法がわかりません。

そのため、そのような場合のサポートがあるかどうかを知りたいです。フレームワークが提供する保証、またはそれらを強制する方法はありますか?

私が今見ている唯一の方法は、重要なタスクがまだ完了していないことを示す兆候としてフラグを設定することです.

4

1 に答える 1

0

余談ですがIsBackground、スレッド プール スレッドを設定しないでください。

メソッドについてasyncは、メソッドがではTaskなく を返していることを確認してから、を使用してすべてのメソッドを使用voidできます。イベント ハンドラーでトップレベルの s ではなく、それらをキャプチャーすることができます。awaitWhenAllTaskawait

于 2013-03-27T11:58:37.537 に答える