2015-10-20 188 views
0

我看到CreateFile函數需要一個FILE_FLAG_OVERLAPPED參數來使文件io無阻塞。但是,如何使CreateFile調用本身爲非阻塞?如何在不阻塞窗口的情況下打開文件?

+0

StorageFolder :: CreateFileAsync()是winapi ++。沒有什麼非常神祕的,它只是在一個線程池線程上運行。當然你也可以這樣做。 –

+0

'StorageFolder'僅適用於Windows應用商店應用,不適用於標準Win32應用。 –

+0

@Remy這就是爲什麼Hans建議使用線程池。 –

回答

2

不幸的是,CreateFile是同步的。如果你需要它是非阻塞的,你可能試圖在UI線程中做I/O操作。避免這種情況。

您沒有提及編程語言,所以我會認爲它是C++。您可以使用the standard library's threading facilities將I/O密集型工作卸載到工作線程中。例如,您可以將其包裝在packaged_taskasync中。

+0

我知道我可以使用工作線程,它目前是我正在實施的解決方案。我想知道是否可以純粹使用異步和非阻塞IO。我正在嘗試優化傳輸大量文件的作業。該語言是python,但我很自在地使用python的低級窗口API調用。 – Maxaon3000

+0

沒有可用的'CreateFile()'的異步/非阻塞版本。像doug說的那樣,'CreateFile()'本身只是同步的。 –

相關問題