Форум: "Основная";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];
ВнизВход в 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;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.041 c