单线程停止和暂停继续问题

zalu 2009-05-07 10:03:20
UINT SendMailMulti(LPVOID pParam)//我的线程
{
...
return true;
}

AfxBeginThread(SendMailMulti, this);//开始线程

void CMDMView::OnStopBtn() //停止线程(按钮)
{

}

void CMDMView::OnPauseBtn() //暂停和继续(按钮)
{

}
问:OnStopBtn() 和 OnPauseBtn() 应该怎么写?
...全文
469 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bifei1983 2009-05-07
  • 打赏
  • 举报
回复
HANDLE m_event_pause;
HANDLE m_event_stop;

BOOL CXXXDlg::OnInitDialog()
{
...
m_event_pause = NULL;
m_event_stop = NULL;
...
}

DWORD WINAPI CXxxDlg::ThreadProc(LPVOID lpParameter)
{
CXxxDlg* pDlg = (CXxxDlg*)lpParameter;
int i = 0;
while(true)
{

if(WAIT_OBJECT_0 == WaitForSingleObject(pDlg->m_event_pause, INFINITE))
SetEvent(pDlg->m_event_pause);

if(WAIT_OBJECT_0 == WaitForSingleObject(pDlg->m_event_stop, WAIT_OBJECT_0))
SetEvent(pDlg->m_event_stop);
else
break;


pDlg->SetDlgItemInt(IDC_EDIT1, i);
i++;
Sleep(10);
}
AfxMessageBox("线程即将退出");
return 0;
}

void CXxxDlg::OnStart()
{
if(GetDlgItemInt(IDC_EDIT1)>0)
return;

SetEvent(m_event_pause);
SetEvent(m_event_stop);
DWORD dwTheadID = 0;
HANDLE hThread = CreateThread(NULL, 0, ThreadProc, this, NULL, &dwTheadID);
m_event_pause = CreateEvent(NULL, FALSE, TRUE, "");
m_event_stop = CreateEvent(NULL, FALSE, TRUE, "");
CloseHandle(hThread);
}

void CXxxDlg::OnPause()
{
ResetEvent(m_event_pause);
}

void CXxxDlg::OnStop()
{
SetEvent(m_event_pause);
ResetEvent(m_event_stop);
SetDlgItemInt(IDC_EDIT1, 0);
}

void CXxxDlg::OnResume()
{
SetEvent(m_event_pause);
}
zalu 2009-05-07
  • 打赏
  • 举报
回复
一楼的兄弟 不好使啊
各位 帮我填一下 详细代码好吗 !
本人感激不尽 !!!
na_he 2009-05-07
  • 打赏
  • 举报
回复
CWinThread* m_pThread=AfxBeginThread(SendMailMulti, this);//开始线程

m_pThread->SuspendThread();
m_pThread->ResumeThread();
定义在CMDMView里面了。
warsour 2009-05-07
  • 打赏
  • 举报
回复
暂停
SuspendThread()
继续
ResumeThread()

_beginThreadex()
_endthreadex()
zalu 2009-05-07
  • 打赏
  • 举报
回复
解决 给分 谢谢 各位啦

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧