C++编程:如何安全终止线程(2)

http://www.itjxue.com  2015-07-17 00:54  来源:未知  点击次数: 

  从MFC代码中可以看出,AfxEndThread函数通过调用_endthreadex函数终止线程。此外,函数还进行释放线程的堆栈、删除线程对象等工作。

  如果在其它线程中终止该线程,必须采用线程通信的方法实现。其中一种简单的方法是建立一个变量,让线程监视该变量,当该变量为某个值时,则终止线程。

  (1)创建1个基于对话框的应用程序,名称为Demo。

  (2)在IDD_DEMO_DIALOG对话框资源中添加控件,如表所示。

  类型

  ID

  标题

  Static

  IDC_STATIC

  数据:

  Edit

  IDC_DATA

  Button

  IDC_BEGIN_THREAD

  启动线程

  Button

  IDC_END_THREAD

  终止线程

  (3)在文件中定义线程传递参数的数据结构,代码如下:

  // DemoDlg.h

  typedef struct THREAD_PARAM

  {

  HWND hWnd;

  int nData;

  BOOL bExit;

  }_THREAD_PARAM;

  (4)在CDemoDlg类中添加成员变量,代码如下:

  // DemoDlg.h

  protected:

  CWinThread* m_pThread;

  THREAD_PARAM m_ThreadParam;

  (5)在CDemoDlg类的构造函数中初始化成员变量,代码如下:

  // DemoDlg.cpp

  CDemoDlg::CDemoDlg(CWnd* pParent /*=NULL*/)

  : CDialog(CDemoDlg::IDD, pParent)

  {

  // ...

  m_pThread = NULL;

  m_ThreadParam.nData = 0;

  }

(责任编辑:IT教学网)

更多

推荐计算机等级考试文章