Форум: "Начинающим";
Текущий архив: 2011.01.02;
Скачать: [xml.tar.bz2];
ВнизTService, TThread и запись в файл. Найти похожие ветки
← →
grisme © (2010-10-09 16:12) [0]доброго времени суток, уважаемые мастера. столкнулся с проблемой:
есть служба (TService). при инициализации(ServiceStart), создаётся объект TThread.
далее, в ServiceExecute идёт простая обработка событий от диспетчера служб. а объект TThread выполняет работу, до вызова ServiceStop (где останавливается и уничтожается). это всё для примерного понимания "модели" приложения.
Проблема в том, что из TThread.OnExecute делаю попытки записи в файл.var
x : Cardinal;
t : TextFile;
begin
AssignFile(t, "thread.log");
Rewrite(t);
x := 0;
Writeln(t, "x = ", x);
while not Self.Terminated do Inc(x);
Writeln(t, "Thread stopped, x = ", x);
CloseFile(t);
end;
по логике, сразу после старта службы, в файле thread.log должна появиться записьx = 0
.
но записи появляются только после завершения службы (и - получается - остановки нити). причём, обе сразу:x = 0
.
Thread stopped, x = <насуммированное значение>
т.к. в конце, x явно больше нуля, получается, что нить вполне нормально работала.
но почему же не производилась запись в файл?
← →
MBo © (2010-10-09 16:50) [1]Запись производится при закрытии файла и при достижении буфером некоего размера. Принудительная запись - Flush(file), если такая функция есть для текстовых файлов
← →
grisme © (2010-10-09 16:58) [2]MBo © (09.10.10 16:50) [1]
Спасибо, за разъяснение! :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.01.02;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.002 c