Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];

Вниз

Удаление MUTEX   Найти похожие ветки 

 
AlexXn   (2004-09-29 12:06) [0]

Я создаю mutex на midas сервере(на клиенте вызывается удаленная процедура). Потом сам же пытаюсь удалить это mutex(так же с этого  же пользователя вызываю другую процедуру). Не дает, ругается на owner... Как удалить этот мютекс?


 
Anatoly Podgoretsky ©   (2004-09-29 12:07) [1]

Ошибка в 17 строке.


 
AlexXn   (2004-09-29 12:10) [2]


procedure TdmServerBank.IsRecordLock(const ATableName: WideString;
 const AID: WideString; out ALocked: Integer);
begin
 CreateMutex(nil, False, PChar(PChar(ATableName) + ":" + PChar(AID)));
 ALocked := GetLastError;
end;

procedure TdmServerBank.LockRecord(const ATableName: WideString;
 const AID: WideString);
begin
 CreateMutex(nil, False, PChar(ATableName + ":" + AID));
end;

procedure TdmServerBank.UnlockRecord(const ATableName: WideString;
 const AID: WideString);
var
 AMutex: THandle;
begin
 AMutex := OpenMutex(MUTEX_ALL_ACCESS, True, PChar(ATableName + ":" + AID));
 if AMutex <> 0 then
   ReleaseMutex(AMutex);
end;


 
Digitman ©   (2004-09-29 12:38) [3]


> пытаюсь удалить это mutex


и где же ты в этом коде "удаляешь" мьютекс ?


 
AlexXn   (2004-09-29 12:51) [4]

>Digitman

procedure TdmServerBank.UnlockRecord(const ATableName: WideString;
const AID: WideString);
var
AMutex: THandle;
begin
AMutex := OpenMutex(MUTEX_ALL_ACCESS, True, PChar(ATableName + ":" + AID));
if AMutex <> 0 then
  ReleaseMutex(AMutex);
end;


 
clickmaker ©   (2004-09-29 12:53) [5]


> [4] AlexXn   (29.09.04 12:51)

ReleaseMutex - это операция обратная WaitFor...
А тебе видимо нужно CloseHandle делать


 
AlexXn   (2004-09-29 13:01) [6]

>clickmaker
Вместо ReleaseMutex сделал CloseHandle. GetLastError возвратил 0, но при повторном создании mutex с такими же параметрами говорит, что такой уже существует


 
Digitman ©   (2004-09-29 13:13) [7]


> AlexXn   (29.09.04 12:10) [2]


что-то ты не то делаешь ...

при иниц-ции модуля создай мьютекс (если он уже существует, он просто будет окрыт), сохрани полученный хэндл в глоб.переменной hMutex: Thandle ... флаг bInitialOwner д.б. False при этом

при финализации модуля закрой хэндл closehandle(hMutex)

в теле LockRecord() вызывай одну из WaifFor-функций для hMutex

в теле UnLockRecord() вызывай ReleaseMutex(hMutex)



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.061 c
1-1098442610
}|{yk
2004-10-22 14:56
2004.11.07
Такой вот код вываливается с ошибкой OLE


14-1097834341
iZEN
2004-10-15 13:59
2004.11.07
Windows Terminal Server и Ctrl + Alt + Del


3-1097322328
Koala
2004-10-09 15:45
2004.11.07
Ошибка создания backup.fbk


14-1098269351
YurikGL
2004-10-20 14:49
2004.11.07
ОСТ-ы по связи???


1-1098696258
Arkady
2004-10-25 13:24
2004.11.07
Каталог запуска программы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский