C++ 必须在其他线程上调用DLL函数
我有一个dll函数C++ 必须在其他线程上调用DLL函数,c++,multithreading,dll,C++,Multithreading,Dll,我有一个dll函数Copy(const char**srcFiles,const char*dst),它将srcFiles复制到文件夹dst。例如,它必须每0.01秒一次。将复制进度信息(百分比)发送到我自己的功能CopyProgress。问题是我无法更改复制函数代码,因此我认为在不同的线程上执行此函数是个好主意。但我是一个多线程的初学者,无法想象如何做到这一点 有什么想法,提示吗?谢谢。 首先,你应该考虑改变拷贝,以便通过回调给你进度信息。但是,如果您必须在不更改Copy的情况下执行此操作,则
Copy(const char**srcFiles,const char*dst)
,它将srcFiles
复制到文件夹dst
。例如,它必须每0.01秒一次。将复制进度信息(百分比)发送到我自己的功能CopyProgress
。问题是我无法更改复制函数代码,因此我认为在不同的线程上执行此函数是个好主意。但我是一个多线程的初学者,无法想象如何做到这一点
有什么想法,提示吗?谢谢。 首先,你应该考虑改变<代码>拷贝<代码>,以便通过回调给你进度信息。但是,如果您必须在不更改Copy
的情况下执行此操作,则必须使用在另一个线程中运行它,然后定期扫描目标目录以查看复制了多少内容(对于此方法,每0.01秒可能太快而不实用-如果您需要如此大的粒度,则必须为Copy
添加一些挂钩).与流行的观点相反,多线程并不是自动解决所有编程问题的方法,而且经常被过度使用。如果您无法更改复制
,并且它没有进度挂钩/回调的方法,那么您将无能为力。FindXXXXChangeNotification API可能会极大地帮助您完成bdonian所说的工作。设置起来并不简单,但OP关于监控复制文件的问题的本质很可能是他的救命稻草。如果这是一个通用的解决方案问题,OP可能是SOL,但由于它是一个文件副本(实际上是副本),您可以利用操作系统调用Windows来帮助您。