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

Вниз

Правильное ведение лога с использованием нитей   Найти похожие ветки 

 
learner ©   (2006-06-11 19:26) [0]

Пытаюсь вести лог ошибок.
Никак не получаеться записывать с использованием нитей.
Пишет в файл ерунду. Я понимаю, что память, на которую ссылаеться нить
изменяется. Но почему и как это можно избежать ?
function Str_AddToFileThread(const pValue:PChar):DWord; stdcall;
begin
Result:=0;
EnterCriticalSection(ERR_CS);
try
 Str_AddToFile(TestFile,pValue);  // Добавляет строку к файлу
finally
 LeaveCriticalSection(ERR_CS);
end;
end;

procedure SetThreadError(const Mess:string);
var
ThreadHand, ThreadID:DWord;
begin
try
 ThreadHand:=CreateThread(nil,0,@Str_AddToFileThread,PChar(Mess),0,ThreadID);
 if ThreadHand<>0 then CloseHandle(ThreadHand);
finally
end;
end;

procedure Test;
var
i:integer;
begin
for i:=0 to 1000 do
 SetThreadError("string"+IntToStr(i)); // Пишет ерунду
//  Str_AddToFile(TestFile,"string"+IntToStr(i));// Пишет нормально
end;


 
Dmitrij_K   (2006-06-11 22:00) [1]

Ну например так
function Str_AddToFileThread(const pValue:PChar):DWord; stdcall;
begin
Result:=0;
//EnterCriticalSection(ERR_CS);
try
// Str_AddToFile(TestFile,pValue);  // Добавляет строку к файлу
finally
// LeaveCriticalSection(ERR_CS);
StrDispose(pValue)
end;
end;

procedure SetThreadError(const Mess:PChar);
var
ThreadHand, ThreadID:DWord;
begin
try
ThreadHand:=CreateThread(nil,0,@Str_AddToFileThread,Mess,0,ThreadID);
if ThreadHand<>0 then CloseHandle(ThreadHand);
finally
end;
end;

procedure Test;
var
i:integer;
p:PChar;
s:sTRING;
begin
 for i:=0 to 1000 do
 begin
   s := "string"+IntToStr(i);
   p := StrNew(PChar(s));
   SetThreadError(p); // Пишет ерунду
 end;
end;


 
learner ©   (2006-06-11 23:24) [2]

Dmitrij_K   (11.06.06 22:00) [1]
Получилось.
Спасибо бльшое !



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

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

Наверх




Память: 0.47 MB
Время: 0.052 c
2-1150390279
T54
2006-06-15 20:51
2006.07.02
Надо проиграть avi- файл


6-1139673511
Перископ
2006-02-11 18:58
2006.07.02
отправка SMS


15-1147255423
Колдун
2006-05-10 14:03
2006.07.02
Написание многопотчной качалки


2-1150362531
[BAD]Angel
2006-06-15 13:08
2006.07.02
как подавить сообщение об ошибке?


4-1143575019
Noby
2006-03-28 23:43
2006.07.02
Кнопки мыши