我正在使用线程在MFC中..我不知道如何使用线程..我不能达到我的例外!我实际上尝试的是读取目录并显示文件名,同时,进度控制应该显示进度..我创建了一个动态静态显示文件名和进度条控制来显示进度......这里发生的是,它的第一个显示所有文件名一个接一个,然后显示进度......所以,有点困惑......任何人都可以解释我该怎么做,或者参考我的一些文章......如果你想我可以发布代码MFC中的线程在显示消息和进度的同时出现问题?
0
A
回答
1
这似乎是为每个文件创建10个线程
for(int i =0;i<10;i++)
{
THREADINFOSTRUCT *_param = new THREADINFOSTRUCT;
_param->_this = this;
AfxBeginThread(MyThread,_param,THREAD_PRIORITY_ABOVE_NORMAL);
....
}
全部10个主题都是试图设置单个进度条。 (这是很糟糕)
ts->_this->m_ProgressCtrl.SetRange (0, 500);
while (ts->_this->m_ProgressCtrl.GetPos() < 500)
{
Sleep(250);
ts->_this->m_ProgressCtrl.StepIt();
}
我们没有看到代码创造的进度条。但它可能属于主线。所以当这10个线程尝试和SetRange
或GetPos
或StepIt
,他们实际上是发送消息到主线程告诉它做这些事情。
同时主线程在do {} }while(FindNextFileW(handle,&findData));
循环中,并且没有泵送消息。所以这些线程都要等到循环结束并且主线程返回到消息泵。
然后,每个线程都会唤醒并从调用SetRange
等处返回。但是,每次只有一个线程,因为主线程一次只能处理消息。
对于这个工作,你需要将FindNextFile
循环进入一个线程,你需要让主线程返回到泵,使得该UI可以在事情的进展进行更新。
您还需要停止尝试直接从任何非主线程设置进度条。而是使用PostMessage将消息发布回主线程并让其设置进度条。这样,你的线程不会阻塞,并等待主线程代表它们与进度条对话。
相关问题
- 1. MFC - 显示消息
- 2. 如何在asyncTask中显示不同的消息进度条
- 3. Android:显示进度条对话框时出现问题?
- 4. 在android中执行插入语句时显示进度条时出现问题
- 5. 后端进程运行时如何显示进度消息/栏?
- 6. 在asp.net问题中显示消息框
- 7. 显示消息问题
- 8. 在隐藏和显示div上显示div时出现问题
- 9. 在功能区mfc显示消息栏
- 10. 从不同于MainActivity的类中的线程显示Toast消息
- 11. 在C#中运行线程时在GUI中显示消息
- 12. 线程在java中显示进度
- 13. MFC项目中的线程问题
- 14. 如何在PHP中更新时显示进度消息?
- 15. 解析golang中的icmp消息时出现的问题
- 16. Java显示消息的问题
- 17. 在Android中控制标题栏进度条时出现问题
- 18. 显示进度条问题
- 19. NServiceBus - 在消息处理程序中使用TransactionScopeOption.Suppress时出现的问题
- 20. Android中的loadDataWithBaseURL()在显示图像时出现的问题
- 21. Windows窗体 - 显示来自消息框的消息的问题
- 22. 显示进度条或等待消息
- 23. 进度条显示“回声OFF”消息
- 24. 在VB.NET中完成进度条显示时多次显示消息框
- 25. 在Tkinter中显示消息框的进度
- 26. MySQL和PHP中的线程消息传递问题
- 27. 使用mqtt.js和Mosca发出的离线消息的问题
- 28. 线程在Spring AMQP中的实现消息消息
- 29. 使用MFC和AfxBeginThread线程调度问题
- 30. 在MonoTouch .NET线程中使用NSTimer时出现的问题
感谢您的回复...现在我理解了这个概念。谢谢解释...在读完你之后,我去了下面的链接.. http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id = 435 如果你可以把我的一些其他相关的线程文章,它会gr8 ...... – kiddo 2010-03-02 05:53:41