Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Освобождение объекта мьютекса


Автор: evgovs1991 1.11.2015, 09:43
Подскажите почему не получается освободить объект мьютекса? 
Код

HANDLE hx;
void __fastcall TForm1::Gtx1Click(TObject *Sender)
{
    DWORD Result;
    hx=OpenMutex(SYNCHRONIZE, true, "MyMutex");
    if(hx)
        {
            ShowMessage("Принтер занят!");
            Result=WaitForSingleObject(hx,INFINITE);
        }
    else{
        CreateMutex(NULL, false, "MyMutex");
        PrintDialog1->Execute();

    }
}
void __fastcall TForm1::PrintDialog1Close(TObject *Sender)
{
    if(ReleaseMutex(hx)) ShowMessage("Объект освобржден !"); ;

}
//---------------------------------------------------------------------------

Автор: volatile 1.11.2015, 17:38
Цитата(evgovs1991 @  1.11.2015,  09:43 Найти цитируемый пост)
почему не получается освободить объект мьютекса? 

дык вы его нигде и не освобождаете.
По крайней мере в коде что приведен, этого не видно.
CloseHandle (hx);


------

а, не сорри, не заметил ReleaseMutex

просто ваш ReleaseMutex не получает правильного хендла.
нужно 
   hx = CreateMutex(NULL, false, "MyMutex");

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)