2012-10-11 24 views
0

我有一個dll函數Copy(const char** srcFiles, const char* dst),它將srcFiles複製到文件夾dst。它必須,例如,每0.01秒。發送複製進度信息(百分比)到我自己的功能CopyProgress。問題是我不能更改Copy函數代碼,所以我認爲在不同的線程上執行這個函數是個好主意。但我是多線程初學者,無法想象如何做到這一點。必須在不同的線程上調用DLL函數

任何想法,提示?謝謝。

+1

與流行的觀點相反,多線程不是自動解決每個編程問題的方法,而且經常被過度使用。如果你不能改變'Copy',並且它沒有進展鉤子/回調的方法,那麼你就無能爲力。 –

回答

0

首先,您應該考慮更改Copy以通過回調爲您提供進度信息。但是,如果你絕對必須不改變Copy,你必須在另一個線程中使用CreateThread運行它,然後定期掃描目的地目錄以查看已經複製了多少(每0.01秒可能太快而不適用於此方法 - 如果你需要這麼多粒度,你必須添加一些鉤子到Copy)。

+0

FindXXXXChangeNotification API可能會極大地幫助bdonian正在討論的內容。這不是微不足道的設置,但OP有關監控複製文件問題的本質可能是他的救助。如果這是一個通用解決方案問題,則OP可能是SOL,但由於它是文件副本(實際上是副本),因此可以利用OS系統調用Windows來幫助您解決問題。 – WhozCraig

相關問題