何もしないようにスレッドをスピンアップしていて、何もしないで終了するまで待っているので、それは不必要なものより悪いです。
何もしない最も簡単な方法は何もしないことです。 async
方法において、この方法は、まだTask
に戻ってきただろうが、それTask
はすでに完成されますので、何かawait
がアップし、さらにそれをINGのは、まっすぐそれを行う必要がある次の事になります。また、(
public async virtual Task Save(String path)
{
if (NewWords.Any())
{
await FileManager.WriteDictionary(path, NewWords, true);
}
}
大文字と小文字の区別がある場合は、SaveAsync
とWriteDictionaryAsync
となります)。 ない場合async
を使用しては(とそこここにする必要はませんが、私はそれが一例だ理解)Task.CompletedTask
を使用します。
public virtual Task Save(String path)
{
if (NewWords.Any())
{
return FileManager.WriteDictionary(path, NewWords, true);
}
return Task.CompletedTask;
}
あなたが4.6より前のフレームワークに対してコーディングされているため、その後、CompletedTask
が使用できない場合Task.Delay(0)
はDelay
特別な場合、キャッシュされた完了したタスクを返す値0
として有用である(実際には、同じ1そのCompletedTask
リターン):
public virtual Task Save(String path)
{
if (NewWords.Any())
{
return FileManager.WriteDictionary(path, NewWords, true);
}
return Task.Delay(0);
}
しかし、4.6の方法は、あなたのINTENにとして明確ですこれは、実装の癖に依存するよりむしろ。
なぜコードを挿入したか教えてください。それは必要ではなく、あなたが何かを誤解しなければならないという証拠です。それが何であるかを知る必要があります。 – usr
それは必要ではなく、また有害です。 – IllidanS4
DONT USE 'Task.Run'を実装する! http://blog.stephencleary.com/2013/11/taskrun-etiquette-examples-dont-use.html – Aron