C++ 必须在其他线程上调用DLL函数

C++ 必须在其他线程上调用DLL函数,c++,multithreading,dll,C++,Multithreading,Dll,我有一个dll函数Copy(const char**srcFiles,const char*dst),它将srcFiles复制到文件夹dst。例如,它必须每0.01秒一次。将复制进度信息(百分比)发送到我自己的功能CopyProgress。问题是我无法更改复制函数代码,因此我认为在不同的线程上执行此函数是个好主意。但我是一个多线程的初学者,无法想象如何做到这一点 有什么想法,提示吗?谢谢。 首先,你应该考虑改变拷贝,以便通过回调给你进度信息。但是,如果您必须在不更改Copy的情况下执行此操作,则

我有一个dll函数
Copy(const char**srcFiles,const char*dst)
,它将
srcFiles
复制到文件夹
dst
。例如,它必须每0.01秒一次。将复制进度信息(百分比)发送到我自己的功能
CopyProgress
。问题是我无法更改
复制
函数代码,因此我认为在不同的线程上执行此函数是个好主意。但我是一个多线程的初学者,无法想象如何做到这一点


有什么想法,提示吗?谢谢。

首先,你应该考虑改变<代码>拷贝<代码>,以便通过回调给你进度信息。但是,如果您必须在不更改
Copy
的情况下执行此操作,则必须使用在另一个线程中运行它,然后定期扫描目标目录以查看复制了多少内容(对于此方法,每0.01秒可能太快而不实用-如果您需要如此大的粒度,则必须为
Copy
添加一些挂钩).

与流行的观点相反,多线程并不是自动解决所有编程问题的方法,而且经常被过度使用。如果您无法更改
复制
,并且它没有进度挂钩/回调的方法,那么您将无能为力。FindXXXXChangeNotification API可能会极大地帮助您完成bdonian所说的工作。设置起来并不简单,但OP关于监控复制文件的问题的本质很可能是他的救命稻草。如果这是一个通用的解决方案问题,OP可能是SOL,但由于它是一个文件副本(实际上是副本),您可以利用操作系统调用Windows来帮助您。