Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.05;
Скачать: CL | DM;

Вниз

Вход в CriticalSection   Найти похожие ветки 

 
Leaner ©   (2004-11-20 09:27) [0]

Здравствуйте !
Помогите, пожалуйста, разобраться.
Почему я попадаю в CriticalSection, не успев покинуть ее ?
var
Test_CS:RTL_CRITICAL_SECTION;

procedure TMainForm.ToolButton3Click(Sender: TObject);
begin
TryEnterCriticalSection(Test_CS);
ToolButton3Click(Sender);
RichEdit1.Lines.Add("Enter");
Application.ProcessMessages;
LeaveCriticalSection(Test_CS);
end;

initialization
InitializeCriticalSection(Test_CS);
finalization
DeleteCriticalSection(Test_CS);
end.


 
Palladin ©   (2004-11-20 09:46) [1]

Как ты это определил? У тебя stack overflow должно выскочить... хотя в любом случае, дабы развеять твои бессмысленные сомнения, напишь в обработчике так...

If (Sender as TComponent).tag=3 then exit;
TryEnterCriticalSection(Test_CS);
(Sender as TComponent).Tag:=(Sender as TComponent).Tag+1;
Button1Click(Sender);
Memo1.Lines.Add("Enter");
LeaveCriticalSection(Test_CS);
Memo1.Lines.Add("Leave");

PS Если ты этого не видишь это еше не значит что этого не существует.


 
Verg ©   (2004-11-20 11:56) [2]

Критическая секция так устроена. Поток вошедиший в нее может войти в нее повторно и т.д. Но только он же. Никакой другой. Чтобы освободить секцию, поток долже выйти из нее ровно столько раз, сколько в нее входил.



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

Текущий архив: 2004.12.05;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.053 c
3-1099574728
DelphiN!
2004-11-04 16:25
2004.12.05
Глюки фильтра TClientDataSet


3-1099983586
mfender
2004-11-09 09:59
2004.12.05
MAX(id) из DELPHI


1-1101141727
Pirat1
2004-11-22 19:42
2004.12.05
Вопрос по поводу DLL


4-1098423534
Delphi5.01
2004-10-22 09:38
2004.12.05
... как можно очистить Tempory Internet Files и Cookies ...


4-1098287307
korfu
2004-10-20 19:48
2004.12.05
передача строки в ActiveX-приложение