私はいくつかの非同期C#コードを書こうとしていますが、async
と.Wait()
のリソースを理解するのに少し問題があります。私はスレッドやウェブサイトの多くを読んだことがありますが、どういうわけか、どうやって待ってはいけないのかわからないのです。完了する#1のためのいくつかの仕事 非同期コードと同期コードの境界を扱う?
- :私のプログラムの目標は、これです。
- 私が持っているタスクと
のために完全であると#1を必要とし、より多くの仕事ですか:非同期を使用して、私の知る限り
public static void Main()
{
Task t = DoWork();
DoMoreWork();
t.Wait();
DoWorkThatNeedsT();
}
public Task DoWork()
{
return Task.Run(() => {Thread.Sleep(1000);});
}
を、このインスタンスで待つだけ(DoWorkを変更する必要)を次のように変更します。
public async Task DoWork()
{
return await Task.Run(() => {Thread.Sleep(1000);});
}
次に、私は依然として呼び出しメソッドに.Wait()
を持っています。スレッドレス非同期のメリットを得るはずですか?これを実装する別の方法はありますか?
非同期で何をしていますか?さもなければ、非同期の使用には何の意味もありません。また、 'Task.Run()'は解決策ではありません。何の理由もなく別のスレッドを起動します。 –
task.runにあったものはすべて非同期で実行されます。この場合、ちょっと寝ているだけです。実際のプログラムでは、いくつかのファイルを削除して外部プログラムを実行しています。 – user2460953
次に、async/awaitは必要ありません。あなたが何を記述しているかは、使用するものではありません。代わりに、バックグラウンドのworker/task.runを使用します。私は以下で説明します。 –