老问题了,关于关闭线程
我起一个工作线程用于ftp下载文件,希望用户可以随时关闭下载或超时自动停止下载
现在的处理方式是执行在CFtpConnection::GetFile这个关键操作时做判断:
while(!(m_pConnection->GetFile(strRemovePath, strLocalPath)) && (!m_bKillThread))
即下载不成功且没有做出中止线程的要求时就重新尝试,否则如果中止了线程就让线程自己退出
这样勉强可以处理小文件的情况,但是遇上下载大文件时我想中断下载,或者出现错误,线程卡在GetFile函数时就没办法了
我已经在线程里面建立了消息循环,但我发现即使我在卡住的时候PostThreadMessage给该线程,线程也是要处理完GetFile再处理我发出的退出线程的消息,那就和我想要随时中断线程的目的背道而驰了。
请问有什么方法可以随时关闭正在做长时间操作的线程。
顺便说一下如果下载文件的时候用CFtpConnection::OpenFile的话,在每次CInternetFile::Read的时候做判断都是可以随时中断,可这样每下载一个文件就要重新建立ftp连接,这对我的程序消耗过大,所以不能采用。如果还有其他折中的方法也请帮忙指出