1

私の Start() には非常に遅いシリアル コードが含まれているので、それをタスクに投入して待機します。

await new Task(() => { c.Start(); });

これはコンパイルされますが、Start() を呼び出さない限りタスクを実行しないようです。単純な 1 つのライナーの代わりに、3 つの行があります。以下を一行で書く方法はありますか?

var t = new Task(() => { c.Start(); });
t.Start();
await t;
4

1 に答える 1

4

を探していawait Task.Run(c.Start)ます。.NET 4.0 (4.5 ではなく) を使用している場合は、.NET を使用できますawait Task.Factory.StartNew(c.Start)

、およびをTask.Factory.StartNew手動で構築/開始することを好みます。それぞれがより最適な実装を使用しており、単なる省略形ではありません。TaskTask.RunTask.Factory.StartNew

于 2012-11-25T22:59:28.560 に答える