2016-09-15 3 views
1

System.IO namespaceにバージョンのDirectory.CreateDirectoryメソッドを実装する方法はありますか?System.IO.Directory.CreateDirectoryメソッドの非同期/待機のバージョンを実装する方法は?

+0

チェック:: http://stackoverflow.com/questions/18373084/turn-this-code-into-a-task-to-run-asynchronously-on-another-thread 一部を行うことが常に良いもののこのようなスプーンフィードの質問をする前に自分で研究してください –

+0

私はすでにあなたが指しているその質問を読んだ。別のスレッドで非同期にコードを実行することには興味がありません。本当の非同期メソッド呼び出しで実行したいと思います。 –

+0

'Async'は何を実行しますか?非同期メソッドはどこですか? 'Directory.CreateDirectory'は' Async'メソッドではありません –

答えて

3

CreateDirectoryは奇妙なシナリオです。特にネットワークドライブ上のディレクトリを開く/作成する場合、非同期バージョンを組み込むことが理想的です。

通常、BCLがasyncを直接サポートしていない場合、非同期Win32 APIをP/Invokeできます。ただし、この場合、Win32 APIは実際にディレクトリの非同期APIを公開しません。だから、ファイルシステムドライバを直接呼び出す(おそらくすべてのデバイスドライバが非同期I/Oをサポートしているので、確実に動作するはずです)。

それは理想的ではないのですが、そう、あなたはおそらく、この場合でがちょうどTask.Runで呼び出しをラップする、すなわち、偽の非同期メソッドを作る方がいいでしょう。

WindowsストアスタイルのディレクトリAPIは、非同期です。彼らはWin32 APIの下で呼び出す可能性がありますが、私は実際に疑うことがあります - 私は彼らが偽の非同期メソッドとして実装されていると思います。

+0

ありがとう!今私はどのように進めるかを知っています。偽の非同期メソッドは、他の点では完全に非同期のアプリケーションでは非常に素晴らしいソリューションではありません。 - / –

関連する問題