我有一個dll函數Copy(const char** srcFiles, const char* dst)
,它將srcFiles
複製到文件夾dst
。它必須,例如,每0.01秒。發送複製進度信息(百分比)到我自己的功能CopyProgress
。問題是我不能更改Copy
函數代碼,所以我認爲在不同的線程上執行這個函數是個好主意。但我是多線程初學者,無法想象如何做到這一點。必須在不同的線程上調用DLL函數
任何想法,提示?謝謝。
我有一個dll函數Copy(const char** srcFiles, const char* dst)
,它將srcFiles
複製到文件夾dst
。它必須,例如,每0.01秒。發送複製進度信息(百分比)到我自己的功能CopyProgress
。問題是我不能更改Copy
函數代碼,所以我認爲在不同的線程上執行這個函數是個好主意。但我是多線程初學者,無法想象如何做到這一點。必須在不同的線程上調用DLL函數
任何想法,提示?謝謝。
首先,您應該考慮更改Copy
以通過回調爲您提供進度信息。但是,如果你絕對必須不改變Copy
,你必須在另一個線程中使用CreateThread
運行它,然後定期掃描目的地目錄以查看已經複製了多少(每0.01秒可能太快而不適用於此方法 - 如果你需要這麼多粒度,你必須添加一些鉤子到Copy
)。
FindXXXXChangeNotification API可能會極大地幫助bdonian正在討論的內容。這不是微不足道的設置,但OP有關監控複製文件問題的本質可能是他的救助。如果這是一個通用解決方案問題,則OP可能是SOL,但由於它是文件副本(實際上是副本),因此可以利用OS系統調用Windows來幫助您解決問題。 – WhozCraig
與流行的觀點相反,多線程不是自動解決每個編程問題的方法,而且經常被過度使用。如果你不能改變'Copy',並且它沒有進展鉤子/回調的方法,那麼你就無能爲力。 –