Delphi idhttp потоки

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by CheatXX, 11 Sep 2010.

  1. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Ну да, если поток и сам "знает" когда ему завершится, а если нет то надо крутиться в цикле типа while not Terminated do ... и когда Terminate будет вызван произойдет завершение потока.
    ЗЫ Рад что мы поняли друг друга
     
  2. CheatXX

    CheatXX New Member

    Joined:
    8 Jun 2009
    Messages:
    154
    Likes Received:
    2
    Reputations:
    0
    http://dump.ru/file/4779742

    при 1 потоке все ок... а при двух выдает ошибку.. в чем проблема? исходники выше выложил.
     
  3. Redeemer

    Redeemer Member

    Joined:
    3 Jul 2010
    Messages:
    203
    Likes Received:
    24
    Reputations:
    1
    AssignFile(f, filename);
    ReWrite(f);
    Эти методы не допускают параллельных вызовов. Заверни в критическую секцию и все будет ОК.

    Code:
    EnterCriticalSection(FileLock);
    try
      AssignFile(f, filename);
      ReWrite(f);
      CloseFile(f);
    finally
      LeaveCriticalSection(FileLock);
    end;
    Добавь в глобальные переменные FileLock: RTL_CRITICAL_SECTION;
    В OnCreate формы InitializeCriticalSection(FileLock);
    В OnDestroy Формы DeleteCriticalSection(FileLock);

    И еще. Rewrite перезаписывает файл, если нужно дописывать - юзай Append
     
    #23 Redeemer, 11 Sep 2010
    Last edited: 11 Sep 2010
  4. CheatXX

    CheatXX New Member

    Joined:
    8 Jun 2009
    Messages:
    154
    Likes Received:
    2
    Reputations:
    0
    спасибо большое!