工作线程使主线程MFC的对话框处于非活动状态
Work thread makes inactive dialog of the main thread MFC
我有一个基于MFC对话框的应用程序,它有一个对话框。点击按钮,我开始另一个工作线程。不幸的是,当工作线程的函数正在运行时,无法访问我的对话框上的控件。
void CrMainDlg::OnBnClickedButton1()
{
//...
CWinThread* fonThread = AfxBeginThread(WorkerThreadProc, iP, THREAD_PRIORITY_NORMAL, 0, 0, NULL);
//...
}
UINT CrMainDlg::WorkerThreadProc(LPVOID Param)
{
//...
while(/*some bool*/)
{
//makesomething
Sleep(1000);
}
//...
}
只有当我写了Sleep(1000)时,我才能访问ScrollBar或主对话框上的其他按钮或其他东西。如果我不这样做,我只能在while结束后访问控件。。。
我做错了什么?
(1)工作线程函数必须是静态的。如果它没有被声明为静态的,那么您发布的代码将不会编译。(2) 工作线程不应访问任何控件,只应访问数据。
相关文章:
- C++线程安全:如果只有一个线程可以写入非原子变量,但多个线程从中读取. 会遇到问题吗?
- 非静态成员失败的线程调用函数
- 在C++中执行非阻塞线程
- 适用于大型数组的无复制线程安全环形缓冲区
- __thread Embarcadero c++ 10.1 中不创建特定于线程的变量
- 是否可以多线程同时执行非空函数?(C++)
- 是否可以访问非线程安全容器内指针指向的值(线程安全映射中的条目)?
- 与非主线程的 GUI 线程通信
- 多个线程/进程是否可以在不同步的情况下同时从/写入文件的非重叠区域?
- std::thread::join() 可以从非父线程调用吗?
- C++中向量和列表的非写入成员函数的线程安全性
- 如何使用 Win32 API 从 Excel VBA 中的非"Single-Threaded Apartment"线程调用 InternetGetProxyInfo
- 无效使用非静态成员函数 c++ 线程 linux
- 条件_variable和unique_lock如何适用于线程安全列表
- 简单的非阻塞多线程 tcp 服务器
- 线程错误:非静态成员函数的使用无效
- 向线程传递非常数引用
- 为什么thread_local不能应用于非静态数据成员,以及如何实现线程本地非静态数据成员
- Android NDK线程使用非静态成员函数无效
- 使用c++ 11多线程处理非静态成员函数