私は、同期する必要がない長時間実行されるプロセスを高速化する方法を理解しようとしています。 「複数のクエリ結果」をダッシュボードに表示すると考えてください。私はDIを持つ.Net CoreとIOCを使用しています。IOCを使用してasp.net mvcコアコントローラ経由で非同期呼び出し
私は概要()メソッドからIRequirementsServiceインタフェースを介してRequirementsService.Fire()メソッドを呼び出したいです。目的は、各メソッドコールのロジックを他のメソッドと同時に実行できるように、各Fire()メソッドを起動することです。結果を発信者に返す必要があります。
以下の解決策は、まだ同期を実行します...私は、構文の問題を持っていると思うが、VSはちょうどそれが概要()メソッドから同期的に実行されることを私に警告し、何でbawkingされていません。非同期的な性質を持っているコントローラ方法を作る
は//コントローラ
public async Task<ActionResult> Overview()
{
//_requirement service is injected at controller constructor which I removed for brevity.
var fireOne = await _requirement.Fire(10000, "Fire 1");
var fireTwo = await _requirement.Fire(5000, "Fire 2");
var fireThree = await _requirement.Fire(1000, "Fire 3");
return View(model);
}
//インタフェース
public interface IRequirementsService
{
Task<int> Fire(int number, string fireCount);
}
//サービス
public class RequirementsService : IRequirementsService
{
...
public async Task<int> Fire(int number, string fireCount)
{
int TimeOne = 0;
Thread.Sleep(10000 + number);
TimeOne = (10000 + number)/1000;
Debug.WriteLine(fireCount + TimeOne);
return TimeOne;
}
}
なぜ非同期コントローラメソッドを使用することをお勧めしません。また、非同期呼び出しが行われた場合、彼はもはや – Mathew
を待つことはできません。つまり、呼び出し元のメソッドも非同期でなければなりませんか? – Aravind
ストレートコンパイラエラー: 'await'演算子は、非同期メソッド内でのみ使用できます。 – Mathew