「BackgroundWorker」はAnsyc/Awaitに置き換えられるように設計されていることを読みました。
私はAsync/Awaitの凝縮された外観が好きなので、BackgroundWorkersの一部をAsync/Await呼び出しに変換し始めています。
これは私が持っているコードの例です(UIから呼び出されます):
public async void RunFromTheUI()
{
await OtherAction();
}
public async void OtherAction()
{
var results = await services.SomeRemoteAction();
foreach (var result in results)
{
result.SemiIntenseCalculation();
Several();
Other();
NonAsync();
Calls();
}
SomeFileIO();
}
私が呼び出すRunFromTheUI
と、ほとんどすぐに戻ります(AsyncとAwaitの設計による)。
services.SomeRemoteAction()
ただし、終了後に再開すると、foreach
ループと別のメソッド呼び出しが実行されます。
私の質問は次のとおりです。そのループがパフォーマンスの低下である場合、UIがフリーズしますか? (以前はすべてをバックグラウンドワーカースレッドに入れていたので、UIの速度が低下することはありませんでした)。
注:私は.Net 4.0をターゲットにしており、AsyncNugetPackageを使用しています。