mfc对话框类中多线程
2015-11-11 09:57
218 查看
做数据库的查询和显示,用到多线程。(对话框点击按钮查询,然后列表显示)
1、先定义线程函数
unsigned int __stdcall CDlg::QueryThreadFunc1( LPVOID lParam )
{
CDlg *pThis = reinterpret_cast<CDlg*>( lParam );
pThis->StartOracleQuery();
return 0;
}
这个在头文件中是静态函数:
static unsigned int __stdcall QueryThreadFunc1(LPVOID lParam);
上述代码中,StartOracleQuery()是普通函数,里面是数据查询处理。
2、创建线程
m_hQueryThread是成员变量,HANDLE类型
void CDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
if(!InitDB())
{
return;
}
m_hQueryThread = reinterpret_cast<HANDLE>(::_beginthreadex(NULL, 0, QueryThreadFunc1, reinterpret_cast<void*>(this), CREATE_SUSPENDED, 0));
if (m_hQueryThread != NULL)
{
::ResumeThread(m_hQueryThread);
}
}
1、先定义线程函数
unsigned int __stdcall CDlg::QueryThreadFunc1( LPVOID lParam )
{
CDlg *pThis = reinterpret_cast<CDlg*>( lParam );
pThis->StartOracleQuery();
return 0;
}
这个在头文件中是静态函数:
static unsigned int __stdcall QueryThreadFunc1(LPVOID lParam);
上述代码中,StartOracleQuery()是普通函数,里面是数据查询处理。
2、创建线程
m_hQueryThread是成员变量,HANDLE类型
void CDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
if(!InitDB())
{
return;
}
m_hQueryThread = reinterpret_cast<HANDLE>(::_beginthreadex(NULL, 0, QueryThreadFunc1, reinterpret_cast<void*>(this), CREATE_SUSPENDED, 0));
if (m_hQueryThread != NULL)
{
::ResumeThread(m_hQueryThread);
}
}
相关文章推荐
- Python3写爬虫(四)多线程实现数据爬取
- C#实现多线程的同步方法实例分析
- 浅谈chuck-lua中的多线程
- C#简单多线程同步和优先权用法实例
- C#多线程学习之(四)使用线程池进行多线程的自动管理
- C#多线程编程中的锁系统(三)
- C#多线程学习之(六)互斥对象用法实例
- 基于一个应用程序多线程误用的分析详解
- C#多线程学习之(三)生产者和消费者用法分析
- C#多线程学习之(一)多线程的相关概念分析
- C#多线程之Thread中Thread.IsAlive属性用法分析
- C#控制台下测试多线程的方法
- bat/cmd批处理连接SqlServer数据库查询脚本
- Ruby 多线程的潜力和弱点分析
- Visual C++中MFC消息的分类
- MFC中Radio Button的用法详解
- MFC对话框中添加状态栏的方法
- MFC创建右键弹出菜单的方法
- MFC中动态创建控件以及事件响应实现方法
- C++ 关于MFC多线程编程的注意事项