100分求CMutex的问题,熬夜等!! 我们现在用CMutex控制两个进程的某一种关联,因为它是操作系统级的,所以不同进程建立的同名的CMutex对象对操作系统来说只有一个,所以用它作同步。现在的问题是:如何监视另外一个进程中同名的CMutex的释放(delete CMutex*;)? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你用CMutex::Lock能得到同步对象的访问就说明另一个进程已经释放了 隔一段时间创建一下CMutex对象,如果创建成功,则说明另一个进程中同名的CMutex已经释放。 to laiyiling(【CSDN●】) 另外的进程如果不Lock,但是也没有释放,本进程还是能取到to hongyan80(鸿雁) 同名的可以创建成功,不管以前存不存在to vcleaner(我没当大哥很久了.......)我去查一下这个函数,谢谢各位 你用API,CreateMutex,成功后用GetLastError()返回ERROR_ALREADY_EXISTS,则就是另一个进程中同名的CMutex已经释放。接着释放掉。 错了,敲太急没注意汗~你用API,CreateMutex,成功后用GetLastError()返回ERROR_ALREADY_EXISTS,则就是另一个进程中同名的CMutex存在,没有释放。接着释放掉。 to wangk(倒之) 我用的是CMutex,怎么用这种方法,谢谢清说一下 #include <afxmt.h>BOOL CYourApp::InitInstance(){ m_pMutex = new CMutex(FALSE,m_pszAppName); if (GetLastError()==ERROR_ALREADY_EXISTS) { return FALSE; }}int CYourApp::ExitInstance() { delete m_pMutex; return CWinApp::ExitInstance();} HANDLE g_hMutex = NULL;BOOL CYourApp::InitInstance(){ g_hMutex = CreateMutex(NULL, FALSE, m_pszAppName); if (hMutex == NULL) { TRACE("CreateMutex error: %d\n", GetLastError()); return FALSE; } if (GetLastError()==ERROR_ALREADY_EXISTS) { return FALSE; }}int CYourApp::ExitInstance() { CloseHandle(g_hMutex); return CWinApp::ExitInstance();} 如何监视另外一个进程中同名的CMutex的释放=========WaitForSingleObject 直接用WaitForSingleObject来等待,同时可以设置超时等 8位位图可以是彩色图像吗? 为什么用Viusal studio 2005 创建MFC时 编译会出错? 一个高难度问题! GetMenuInfo和GetMenuString取得的菜单文本都不包含\t 变量类型问题 请教ActiveX控件method输出字符串的问题 求VC在word中复制表格的代码,急急急 各位高手:如何去掉文件的只读属性 又来打扰大家了,我想单击一个模式对话框的任何一个位置的时候,关闭该对话框??? 我做的矢量绘图程序 想用VC6.0调用NET Framework 类库,有什么好办法没有?高手请进,急....... 问一个关于MDI的问题???
另外的进程如果不Lock,但是也没有释放,本进程还是能取到
to hongyan80(鸿雁)
同名的可以创建成功,不管以前存不存在
to vcleaner(我没当大哥很久了.......)
我去查一下这个函数,谢谢各位
你用API,CreateMutex,成功后用GetLastError()返回ERROR_ALREADY_EXISTS,则就是另一个进程中同名的CMutex存在,没有释放。接着释放掉。
我用的是CMutex,怎么用这种方法,谢谢清说一下
BOOL CYourApp::InitInstance()
{
m_pMutex = new CMutex(FALSE,m_pszAppName); if (GetLastError()==ERROR_ALREADY_EXISTS)
{
return FALSE;
}
}int CYourApp::ExitInstance()
{
delete m_pMutex;
return CWinApp::ExitInstance();
}
BOOL CYourApp::InitInstance()
{
g_hMutex = CreateMutex(NULL, FALSE, m_pszAppName); if (hMutex == NULL)
{
TRACE("CreateMutex error: %d\n", GetLastError());
return FALSE;
} if (GetLastError()==ERROR_ALREADY_EXISTS)
{
return FALSE;
}
}int CYourApp::ExitInstance()
{
CloseHandle(g_hMutex);
return CWinApp::ExitInstance();
}
=========
WaitForSingleObject