MFC工作者线程
//************工作者线程**************
1.在头文件中添加UINT ThreadFunc(LPVOID lpParam); 注意应在类的外部
2.添加protected型变量:CWinThread* pThread
3.添加线程处理函数:
UINT ThreadFunc(LPVOID lpParam)
{
while (true)
{
...
Sleep(1000);
}
return 0;
}
4.开启线程AfxBeginThread(ThreadFunc,lpParam);
注意:用于控制线程循环的标志量在声明时要加上volatile,
表示每次用到这个变量是都要从内存中读取
因为Release模式下由于编译器优化,会把这个变量复制到寄存器,
如果在线程外改变这个变量,寄存器中的不会改变,
在线程中修改这个变量只会改变寄存其中的“副本”
_In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
_In_ SIZE_T dwStackSize,
_In_ LPTHREAD_START_ROUTINE lpStartAddress,
_In_opt_ LPVOID lpParameter,
_In_ DWORD dwCreationFlags,
_Out_opt_ LPDWORD lpThreadId
);
: 0 创建后立即执行
CREATE_SUSPENDED 线程挂起,直到调用ResumeThread后才开始执行
STACK_SIZE_PARAM_IS_A_RESERVATION 、、、
如:
HANDLE hThread;
DWORD dwThreadId;
//如果不用这个句柄,就CloseHandel(ThreadHandle ); 关闭句柄。
//只是关闭了一个线程句柄对象,表示我不再使用该句柄,即不对这个句柄对应的线程做任何干预了。
//如改变优先级,被其他线程等待,强制TermateThread等就要使用这个句柄
while (true)
{
GetExitCodeThread(hThread, &dwThreadExitCode);//得到线程退出码
break;
}
TerminateThread(hThread, 0);
hThread = (HANDLE)_beginthreadex(NULL, 0, ThreadFun, NULL, 0, &dwThreadId);
MFC工作者线程的更多相关文章
- MFC中线程相关知识
MFC中把线程分为两种类型,UI线程和工作者线程. MFC中启动一个线程的最好方法是调用AfxBeginThread,有两个版本,一个用于启动Ui线程,另外一个用于启动工作者线程.在MFC程序中,只有 ...
- UI线程和工作者线程
本文转载于:http://blog.csdn.net/libaineu2004/article/details/40398405 1.线程分为UI线程和工作者线程,UI线程有窗口,窗口自建了消息队列, ...
- [转]MFC子线程中更新控件内容的两种办法
一.概述 每个系统中都有线程(至少都有一个主线程),而线程最重要的作用就是并行处理,提高软件的并发率.针对界面来说,还能提高界面的响应能力.一般的,为了应用的稳定性,在数据处理等耗时操作会单独在一个线 ...
- MFC 结束线程
在wtl工程中定义一个现成,如下:DWORD WINAPI ThreadFunc( LPVOID pParam ){if( g_pMainlg )g_pMainlg->DoEnumNetwork ...
- Windows线程漫谈界面线程和工作者线程
每个系统都有线程,而线程的最重要的作用就是并行处理,提高软件的并发率.针对界面来说,还能提高界面的响应力. 线程分为界面线程和工作者线程,界面实际就是一个线程画出来的东西,这个线程维护一个“消息队列” ...
- MFC 中线程传递CString 是不安全的 转
MFC 中线程传递CString 是不安全的 在MFC中,向线程传递CString变量参数时,很容易犯一个错误,就是使用一个超出生存期的变量,在主函数中定义的CString变量是局部变量 ...
- MFC创建线程示例
MFC创建线程示例 AfxBeginThread() 创建现场的方法是AfxBeginThread()函数. 在[.CPP]文件定义一个全局变量,决定什么时候退出这个线程. BOOL g_bWillE ...
- [转]MFC子线程更改图像数据后更新主窗口图像显示方法
程序思路是由外部的输入输出控制卡发出采集图像信号,之后相机采集图像得到图像数据指针,接收图像数据指针创建成图像最后显示到MFC对话框应用程序的Picture Control控件上,同时,为了标定相机位 ...
- C#线程学习笔记二:线程池中的工作者线程
本笔记摘抄自:https://www.cnblogs.com/zhili/archive/2012/07/18/ThreadPool.html,记录一下学习过程以备后续查用. 一.线程池基础 首先,创 ...
随机推荐
- ImageMagick:获取一行文字的宽与高
double *fm = MagickQueryFontMetrics(mw_temp, dw_wand, text_utf8); //获取文字在指定字体和字号下的宽度和高度 double textW ...
- c语言: 修改参数的地址,及注意事项
如果需要在函数中修改参数的地址,首先参数肯定要是指针类型,同时传递的参数不能直接使用数组变量,至少需要先转换一下. 比如: char str[] = "123"; 不能直接传 ab ...
- (九)逻辑运算,order by,desc
逻辑运算 AND,OR,NOT ......where 表达式1 and 表达式2: ......where 表达式2 and 表达式1: SQL优化: SQL在解析where时是从右向左解析的. ...
- 构建flutter环境并实现属于我们的hello world
我们知道flutter和react-native一样,都是既可以运行在andorid也可以运行在iOS环境下的. 我之前是react-native开发者,我的电脑环境中已经安装好了jdk,sdk,以及 ...
- Luogu P4306 [JSOI2010]连通数 传递闭包
正解其实是\(Tarjan\) + \(拓扑拓扑\),但是却可以被\(O(N^3 / 32)\)复杂度的传递闭包水过去.心疼一下写拓扑的小可爱们. 学到一个\(bitset\)优化布尔图的骚操作,直接 ...
- c3p0配置文件(c3p0.properties.xml)解读
package cn.lijun.demo; import com.mchange.v2.c3p0.ComboPooledDataSource; import javax.sql.DataSource ...
- 字节缓冲流 BufferedOutputStream BufferedInputStream
/*缓冲流:读取数据大量的文件时,读取的速度慢java提供了一套缓冲流 提高io流的效率 * */ package cn.lijun.demo; import java.io.BufferedInpu ...
- qml: 自定义输入框
import QtQuick 2.7 Rectangle { width:; height:; border.width:; border.color: "#E7E7E7" rad ...
- maven-compiler-plugin报错
[INFO] Scanning for projects... [INFO] [INFO] --------------------------< cn.x:credittest >--- ...
- 信用评分卡 (part 6 of 7)
python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ...