Web APIコードからメソッドを非同期で実行したいが、目的の動作が得られていない。Async/Awaitを使用して関数を非同期に実行しようとしましたが、C#を使用していませんか?
私は非同期の方法でLongCallMethodを実行しようとしています。 LongCallMethodが完了する前に、私は自分のユーザーに成功を返すことができます。
私はawaitとasyncでさまざまな呼び出しを試みましたが、まだ成功していません。 私はasync/awaitの概念を正しく理解していないかもしれません。
私は何をしているのか教えていただけますか?
私のコントローラのコードは
[HttpGet("{id}")]
public string Get(int id)
{
PracticeAsync p = new PracticeAsync();
p.LongCallMethod();
return "Success";
}
の下PracticeAsyncは以下であるクラスのコードです:
public class PracticeAsync
{
public async Task LongCallMethod()
{
var x = await CallThis();
}
public async Task<dynamic> CallThis()
{
Thread.Sleep(10000); //DB call
return "done";
}
}
Thread.SleepをWait Task.Delayに置き換えてください。 – MistyK
非同期メソッドが 'CallMethod'のときに' p.LongCallMethod() 'をなぜ呼び出すのですか? –
私はTask.Delayを使用して希望の動作を得ています。ありがとう@MistyK –