2016-09-15 70 views
1

我想知道如何在System.IO namespace中實現Directory.CreateDirectory方法的async/await版本?如何實現System.IO.Directory.CreateDirectory方法的異步/等待版本?

+0

檢查:: http://stackoverflow.com/questions/18373084/turn-this-code-into-a-task-to-run-asynchronously-on-another-thread 雖然總是好做一些研究你自己的問題,然後問這樣的餵食問題 –

+0

我已經閱讀過你提到的這個問題。我不想在另一個線程上異步運行代碼,我想用真正的異步方法調用來運行它。 –

+0

你會運行什麼'異步',其中的異步方法。 'Directory.CreateDirectory'不是'Async'方法 –

回答

3

CreateDirectory是一個奇怪的場景。這是內置異步版本的理想選擇,特別適用於在網絡驅動器上打開/創建目錄。

通常,如果BCL不直接支持異步,您將能夠P /調用異步Win32 API。但是,在這種情況下,Win32 API實際上並不公開目錄的異步API。所以你必須更低 - 可能直接調用文件系統驅動程序(所有設備驅動程序都支持異步I/O,所以這肯定會起作用)。

所以,雖然它的效果並不理想,你在這種情況下關可能會更好,只是讓假貨異步方法,即在包裝的Task.Run電話。

在附註上,Windows Store風格的目錄API是異步的。他們可能在Win32 API下面調用,但我真的很懷疑 - 我期望它們被實現爲假異步方法。

+0

謝謝!現在我知道如何繼續。假異步方法在其他完全異步應用程序中不是一個很好的解決方案: - / –