工作线程通常用来执行一些后台任务,如:数据计算、后台杀毒等等。因为不需要创建窗口和处理用户消息,编写比较容易,在程序中只要调用AfxBeginThread 函数就可以创建并启动一个工作线程了。

AfxBeginThread 的原型如下:

CWinThread *AfxBeginThread( 
    AFX_THREADPROC pfnThreadProc,                           //指向控制函数的地址  
    LPVOID pParam,                                                     //指向传递给控制函数的参数  
    int  nPriority /* = THREAD_PRIORITY_NORMAL */ ,     //指定线程的优先级  
    UINT nStackSize /* = 0 */ ,                                      //指定堆栈大小  
    DWORD dwCreateFlags /* = 0 */ ,                            //创建标识  
    LPSECURITY_ATTRIBUTES lpSecurityAttrs /* = NULL */     //安全属性  
) 

从上面参数可以看到,只有前两个参数是必须的,其余参数都使用默认的话,就可创建了一个具有普通优先级别的线程。

示例:编写一个应用程序,当在程序窗口按下鼠标左键,启动一个线程,该线程可以在屏幕上显示一个信息框。
1.新建单文档程序;
2.在视图类CPP文件添加一个准备作为线程的函数:

UINT MessageThread(LPVOID pParam) 
{ 
    LPTSTR    pMessage = (LPTSTR)pParam; 
    CWnd *pMainWnd = AfxGetMainWnd(); 
    ::MessageBox(pMainWnd->m_hWnd, pMessage, _T( ; 
} 

3.在视图类的鼠标左键消息响应函数中创建和启动线程:

void  CThreadTestView::OnLButtonDown(UINT nFlags, CPoint point) 
{ 
    AfxBeginThread(MessageThread, _T("Greetings from your thread!" )); 
    CView::OnLButtonDown(nFlags, point); 
} 

程序运行结果:

工作线程AfxBeginThread的使用的更多相关文章

  1. 工作线程基类TaskSvc

    工作线程基类TaskSvc 前端时间用ACE写代码,发ACE_Task确实好用.不但能提供数量一定的线程,还能够让这些继承的线程函数自由访问子类的private和protected变量.此外,ACE_ ...

  2. IIS连接数、IIS并发连接数、IIS最大并发工作线程数、应用程序池的队列长度、应用程序池的

    IIS连接数 一般购买过虚拟主机的朋友都熟悉购买时,会限制IIS连接数,这边先从普通不懂代码用户角度理解IIS连接数 顾名思义即为IIS服务器可以同时容纳客户请求的最高连接数,准确的说应该叫" ...

  3. android中工作线程安全

    当应用程序启动,创建了一个叫“main”的线程,用于管理UI相关,又叫UI线程.其他线程叫工作线程(Work Thread). Single Thread Model 一个组件的创建并不会新建一个线程 ...

  4. IIS减少工作线程阻塞的方法

    IIS的工作进程(w3wp.exe)只提供了有限的工作线程(Work Thread)来处理请求.如果这些线程都因为要等待长时间运行的任务而阻塞,则运行时会将新来的请求排队,而不是立即执行,Web服务器 ...

  5. 你真的了解:IIS连接数、IIS并发连接数、IIS最大并发工作线程数、应用程序池的队列长度、应用程序池的最大工作进程数 吗?

    原文链接:http://www.cnblogs.com/yinhaichao/p/4060209.html?utm_source=tuicool&utm_medium=referral 一般购 ...

  6. web workers工作线程

    web worker工作线程是Html5里面提出来的一个新api,对于JavaScript我们的印象是单线程执行,如果运行复杂运算的时候,页面可能就会失去响应,是运行在后台的javascript,独立 ...

  7. 转载:IIS 之 连接数、并发连接数、最大并发工作线程数、队列长度、最大工作进程数

    一.IIS连接数 一般购买过虚拟主机的朋友都熟悉购买时,会限制IIS连接数,顾名思义即为IIS服务器可以同时容纳客户请求的最高连接数,准确的说应该叫“IIS限制连接数”. 客户请求的连接内容包括: [ ...

  8. Clinet/Server在工作线程中刷新页面数据的方法

    Worker线程不能修改UI线程的状态(比如文本框里面的内容).解决的办法是写一个用来更新文本框内容的函数,然后在Worker线程里面通过BeginInvoke来利用delegate调用这个函数更新文 ...

  9. IntentService 服务 工作线程 stopself MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

随机推荐

  1. Qt之QNetworkInterface(查询网络接口),QHostInfo(查询主机IP)

    http://blog.csdn.net/u011012932/article/details/50775052 http://blog.csdn.net/u011012932/article/det ...

  2. The Priest Mathematician

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=31329#problem/F f[0] = 1 , f[ i ] = f[ i - 1 ] ...

  3. Mongodb 设置密码

    Mongodb 配置用户密码: 首先创建admin数据库的用户密码 再创建pics的用户名密码 > show databases; admin 0.203125GB local 0.078125 ...

  4. java学习之字符流与字节流的转换

    package com.io; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExce ...

  5. HNU13028Attacking rooks (二分匹配,一行变多行,一列变多列)

    Attacking rooks Time Limit: 20000ms, Special Time Limit:50000ms, Memory Limit:65536KB Total submit u ...

  6. POJ3264——Balanced Lineup(线段树)

    本文出自:http://blog.csdn.net/svitter 题意:在1~200,000个数中.取一段区间.然后在区间中找出最大的数和最小的数字.求这两个数字的差. 分析:按区间取值,非常明显使 ...

  7. linux之文本编辑器

    [目标] 管理员在进行系统操作的时候,不可避免地会对文本进行修改,如进行各种服务程序配置文件的修改,使程序对用户提供不同的服务效果.在本章我们向大家介绍Linux上常见的编辑器ed.vi.emacs, ...

  8. 解决mysql 数据库中日期类型00:00:00 的问题 设置xml数据类型:java.util.Date

    解决方法是 设置xml里面字段的类型为:java.util.Date.加红部分. 1. beanl里面private Date ulLoginDate; 2.hibernate的xml里面是 < ...

  9. 直播时代--IOS直播客户端SDK,美艳直播【开源】

    看到该文章我非常喜欢,为了方便自己查看和参考所以将其复制过来,源文地址:http://www.cnblogs.com/runner42/p/5241407.html 请支持原作者.原作者如看到请原谅复 ...

  10. C#_会员管理系统:开发六(数据搜索)

    增加界面中的搜索功能 会员资料管理界面(VIPManager.cs): 详细代码如下: using System; using System.Collections.Generic; using Sy ...