事件对象,同一程序,打开2个实例,资源释放的问题.

mszjk 2009-02-21 12:06:44
g_hEvent = CreateEvent(NULL, FALSE, FALSE, "instance");
if(NULL != g_hEvent)
{
// 如果先前有一个实例, 结束此实例
if(ERROR_ALREADY_EXISTS == GetLastError())
{
cout << "Only instance can run!" << endl;
CloseHandle(g_hEvent); // 问题就在这里
return 0;
}
}
SetEvent(g_hEvent); // set event signaled

上段代码中CloseHandle(g_hEvent);是否可以?照msdn所说:If the named event object existed before the function call, the function returns a handle to the existing object,也就是运行第二个实例的时候,g_hEvent的值就是先前存在的对象句柄(这两个实例的句柄有什么关系?是否是同一个?),那么这里调用CloseHandle(g_hEvent);是不是将先前的事件句柄给关闭了.
比如程序为1.exe,那么我先后两次运行1.exe,产生2个实例,第二个实例运行时,会运行CloseHandle(g_hEvent),这个是不是将第一次运行打开的g_hEvent给关闭了?还是两个实例都有各自的g_hEvent,互不相关?
...全文
41 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fishion 2009-02-21
  • 打赏
  • 举报
回复
不会把第一次的g_hEvent关闭
ouyh12345 2009-02-21
  • 打赏
  • 举报
回复
不需要

15,472

社区成员

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

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