关于SetEvent问题

iicy 2003-08-16 10:04:29
HANDLE hAutoEvent = OpenEvent( SYNCHRONIZE, FALSE, "aaa");
SendMessage( hWnd, WM_USER, 0, (LPARAM)szBuffer );
WaitForSingleObject( hAutoEvent, 1000 );
SendMessage( hWnd, WM_USER, 0, (LPARAM)szBuffer );
Sleep( 500 );
SendMessage( hWnd, WM_USER, 0, (LPARAM)szBuffer );
SetEvent( hAutoEvent );
CloseHandle( hAutoEvent );
ExitThread( TRUE );
return(0);

使用CreateEvent( NULL, FALSE, TRUE, "aaa")创建事件。为什么SetEvent返回总是NULL?
...全文
1642 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
vcforever 2003-08-21
  • 打赏
  • 举报
回复
CreateEvent();是创建事件核心对象
WaitForSingleObject();是等待事件核心对象变为激发态
如果是WAIT_OBJECT_0的话就是事件对象变成激发态了,此函数也被激活
SetEvent()是使事件对象变成激发态
ResetEvent()是使事件对象变成非激发态!
iicy 2003-08-18
  • 打赏
  • 举报
回复
使用 fantiyu方法确实可以,但是如果要创建多个事件呢,何以区分事件?
GoldenSea说的我明白,但写程序时就遇到以上问题,怎么解决?
还有如果连续启动多个线程,OpenEvent( SYNCHRONIZE,FALSE, "aaa")返回的事件句柄都不同,怎么会这样?但使用OpenEvent( SYNCHRONIZE,FALSE, NULL)返回的事件句柄都相同!
西江残月 2003-08-17
  • 打赏
  • 举报
回复
CreateEvent();是创建事件
WaitForSingleObject();是等待事件的信号如果返回的是WAIT_OBJECT_0的话就是有信号
SetEvent()是使事件有信号
ResetEvent()是使事件无信号

知道这些做个简单的线程同步是没问题的!
fantiyu 2003-08-16
  • 打赏
  • 举报
回复
CreateEvent( NULL, FALSE, TRUE, NULL)

15,471

社区成员

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

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