ReleaseMutex(hMutex);必须前面有OpenMutex才可以
检查一下恰面你的程序是否有其他地方调用了CreateMutex没有释放
检查一下恰面你的程序是否有其他地方调用了CreateMutex没有释放
解决方案 »
- 请问高手们,如何将Cstring类型的变量内容赋值给char型数组?特别着急!!!谢谢大家了!!!
- 如何让下拉框可以输入超过组件宽度的字符呢?
- 求密码学中的替代、置换加密源代码!
- 用过CPropertySheet和CPropertyPage建立向导(Wizard)的人看过来
- 远程监控
- 为什么我的调用DLL会出错:(如解决,另送100分)
- 如何用PlaySound播放加入到资源中的声音文件
- CRecordSet可以执行SQL语句吗
- 高分求PDF文件格式文档
- 我在CScrollView类中OnPaint()用BltBit显示图片,为什么图片无法滚动?
- 55,每次就给我20分,一个问题就用完了:)
- 如何去掉单文本编辑框的标题栏上标题前的“无标题-”
m_hMutex=CreateMutex( NULL,TRUE,"asfasdfsadfasdfasdf");
if(ERROR_ALREADY_EXISTS == GetLastError ())
AfxMessageBox("Created");
release 代码:
ReleaseMutex(m_hMutex);
CloseHandle (m_hMutex);在create后我用release释放得到ERROR_ALREADY_EXISTS
CSingleInstance::CSingleInstance() : m_hMutex(NULL)
{
}//***********************************************
CSingleInstance::~CSingleInstance()
{
if(m_hMutex != NULL)
{
ReleaseMutex(m_hMutex);
CloseHandle(m_hMutex);
}
}
bool CSingleInstance::Create(LPCTSTR szMutexName)
{
BOOL bSuccess;
m_hMutex = CreateMutex(NULL, FALSE, szMutexName);
if(m_hMutex != NULL)
{
if(WaitForSingleObject(m_hMutex, 0) == WAIT_OBJECT_0)
bSuccess = true;
}
return bSuccess;
}
但是如果2次连续按下"create"按钮,则无论按下多少次"release"按钮
都没有用的
我试了一下,如果按了"create"后再按"release"按钮,此时再按"create"不会出现这个问题。
但是如果2次连续按下"create"按钮,则无论按下多少次"release"按钮,此时再按"create"都没有用的,提示ERROR_ALREADY_EXISTS
后最好加句:hMutex = NULL;
还有就是对每个调用的函数都进行反回直判断也很重要!
所以要及时关闭hMutex