アプリケーションを正常に実行async Task
すると、キーワードなしで呼び出されたメソッドはすべて、await
まさに私がやりたいことを実行します。別のスレッドでメソッドを開始しますが、実行を続けます (コンパイラはこれについて喜んで警告します)。これは期待どおりに問題なく動作します。
この同じコードが単体テストで実行されると、この待機していないメソッドが永久にブロックされ、単体テストが失敗することはありません。
async
メソッドは、通常は非常にうまく機能しているように見えますが、そのように使用するようには設計されていないと推測しています。それらを単体テストで正しく動作させる方法はありますか、またはブロックせずにバックグラウンドでコードを実行するために代わりに何を使用することをお勧めしますか (BackgroundWorker?)。Task アプローチが気に入ったのは、ブロックする方法とブロックしない方法でメソッドを再利用できるからです。Task.Run() を使用して、メソッドを呼び出すラムダを渡すこともできますが、それは見苦しい/判読できないようです。