Конференция "Основная" » Вопрос по дополнительным потокам!!! [D7, WinXP]
 
  • Андрей Пл (19.03.08 11:37) [0]
    У меня такая ситуация в программе есть дополнительный поток который постоянно с периодичностью что то пишет в файл.
    Так вот когда я завершаю программу (так же при этом вызываю метод Terminate доп.потока) то дополнительный поток иногда не успевает завершить последнюю итерацию цикла и также соответственно  операцию записи в файл и получается что в файле оказывается только часть данных.
    Вопрос как мне завершить работу основной программы что бы при этом гарантировано завершил свою работу доп.поток???

    Код доп.потока:

     while not Terminated do
     begin
       sleep(varSleep);

       U:= pSmInt^;
       .  .  .  .  .  .  .
       Regim:= pByte^;

       Writeln(F,DateToStr(Date):10, TimeToStr(Time):15, Uakb:10, I:10, T:10, Uin:10, U:10, Regim:10);
       beep;
     end;

  • grisme (19.03.08 11:43) [1]
    WaitForSingleObject?
  • ЦУП © (19.03.08 11:59) [2]

    > Андрей Пл   (19.03.08 11:37) 


    thread.WaitFor
  • clickmaker © (19.03.08 12:32) [3]

    > метод Terminate доп.потока

    он всего лишь взводит переменую Terminated.
    Вот если TerminateThread, то - другое дело
  • Андрей Пл (19.03.08 13:43) [4]
    Всем спасибо

    thread.WaitFor -
    помогло отцу русское демократии :)
 
Конференция "Основная" » Вопрос по дополнительным потокам!!! [D7, WinXP]
Есть новые Нет новых   [134484   +48][b:0][p:0.001]