あるディレクトリから別のディレクトリにファイルを移動する以下のプログラムがあります。同期的には問題なく動作しますが、非同期的にやりたいと思います。
ありがとう
あるディレクトリから別のディレクトリにファイルを移動する以下のプログラムがあります。同期的には問題なく動作しますが、非同期的にやりたいと思います。
ありがとう
エラーはそれをすべて言います:あなたはawait何かであることができませんvoid。await Tasksとsに類似しているものTask(たとえばYieldAwaitable、によって返される)のみを使用できTask.Yield()ます。しかし、あなたは間違いなくできませんawait void。
.Net4.5ではファイルを非同期的に移動する方法はないようです。
最善の方法は、のようなものを使用することですawait Task.Run(() => fileinfo.MoveTo(target))。これにより、スレッドはブロックされますが、現在のスレッドはブロックされません(UIスレッドを使用している場合に役立つことがあります)。
または、Streams(非同期の場合もあります)を使用してファイルを自分でコピーしてから、元のファイルを削除することもできます。
呼び出しているメソッドがawaitをサポートしている場合にのみ、awaitを使用できます。
メソッドをサポートするawaitには、を返す必要がありますTask<T>
この場合、fileInfo.MoveToはTask