以下是一个用于文件复制的简单线程池,一并使用了事件循环来防止界面卡死,实际效果就是在拷贝大文件,多文件时还是会卡死.效果并不算好.
class CopyTask : public QObject, public QRunnable
{
Q_OBJECT
public:
CopyTask(const QString& a, const QString& b)
{
oldfilename = a;
newfilename = b;
}
~CopyTask()
{}
protected:
void run()
{
QFile::copy(oldfilename,newfilename);
QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
}
signals:
private:
QString oldfilename,newfilename;
};
QThreadPool *copytPool;
copytPool = new QThreadPool(this);
copytPool->setMaxThreadCount(5);//设置最大的活跃线程数
copytPool->start(new CopyTask(QString("aaa.dll"), QString("bbb.dll")));