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

mszjk mszjk 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
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,互不相关?
...全文
评论 2
收藏 已收藏
分享
返回顶部
mszjk
进程/线程/DLL 15,466 成员 49,169 内容