调用一线程该线程又调用程序中一函数比如CXXDlg::Fun();
而这个Fun()函数里有一个大循环,循环里会再调用一函数,此函数是执行复制文件(自创)的现在有个问题,
我在这个大循环里有很多个MESSAGEBOX()判断,弹出的消息框点确定就continue,而就是因为我加了很多个消息框提示判断,程序就会出现错误我跟踪到它的错误是到了那个复制文件里的Write()我一直想不通它是为什么,并且,程序执行起来很慢,就是在那个循环里,我尝试将消息框判断的全部去掉,程序就没问题,并且执行起来很快,我就是想请问 一下,关于多线程下面弹出消息框确认的一般要怎么写才不会有错
而这个Fun()函数里有一个大循环,循环里会再调用一函数,此函数是执行复制文件(自创)的现在有个问题,
我在这个大循环里有很多个MESSAGEBOX()判断,弹出的消息框点确定就continue,而就是因为我加了很多个消息框提示判断,程序就会出现错误我跟踪到它的错误是到了那个复制文件里的Write()我一直想不通它是为什么,并且,程序执行起来很慢,就是在那个循环里,我尝试将消息框判断的全部去掉,程序就没问题,并且执行起来很快,我就是想请问 一下,关于多线程下面弹出消息框确认的一般要怎么写才不会有错
{
try
{
BYTE buffer[1024*64];
CFile fileLocal(strLocalPath,CFile::modeRead);
CFile fileServer(strServerPath,CFile::modeCreate|CFile::modeWrite);
double dwRead=fileLocal.GetLength();
double dwSize=dwRead;
m_progress_file.SetRange(0,100);//设置进度条长度
while (dwRead && CParameters::s_fCancelCopyFlag == D_CanCopy)
{
UINT nBytesRead=fileLocal.Read(buffer,sizeof(buffer));
fileServer.Write(buffer,nBytesRead);
dwRead-=nBytesRead;
m_progress_file.SetPos(100*(dwSize-dwRead)/dwSize);//设置进度条进度
}
if (dwRead!=0 || CParameters::s_fCancelCopyFlag == D_CancelCopy)
return FALSE;//1、用户取消复制 2、复制出错
else
return TRUE;//复制完成
}
catch (CException *e) {
e->ReportError();
return FALSE;
}
}程序会说什么未命名文件
在循环里调用MessageBox(),由于没有什么,那么很快就会产生很多消息对话框,资源严重不足,最后程序挂掉。你可以另创开个线程运行这个消息对话框,
在初始线程里用WaitForSin.....()来等待这个线程的结束
if (MessageBox(...) == IDOK)
继续
else
退出这样在揗环里不会产生很多框,只是这样的MESSAGEBOX会令线程暂停,这样就会出错,我知道这样不好,可是有什么办法呢?高手请教教我
if (MessageBox(...) == IDOK)
继续
else
退出这样会令线程暂停,这种方法我知道不好,可是有什么好的办法能在线程中遇到消息框与用户交互吗?请高手教教我!!!
应该能解决你的问题。