Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2022, 12:06   #1
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,759
По умолчанию Потоки и Windows 10

Всем доброго времени суток. Никто не сталкивался с проблемой автоматического завершения доп потока без вывода какой либо ошибки, когда главное окно программы свернуто в панель задач в Windows 10?
Имеется главное окно (основной поток) и доп поток программы, где выполняется определенный цикл. Пусть будет 100 итераций со Sleep (5000). И если Основное окно видимо, то всё 100 итераций отрабатывают. Но если её минимизировать, то в рандомное время просто завершается доп.поток.
Что это может быть такое? Всю голову сломал. Везде уже поставил отлов исключительных ситуаций. С выводом текста ошибки через Syncronize. Но они все молчат. Тупо завершает поток и как ни в чём не бывало отрабатывает событие OnTerminate, как будто поток завершил свою работу.
У меня уже закралась мысль, что винда стала настолько умная, что если приложение свернуто, то останаваливает поток )))))
FaTaL вне форума Ответить с цитированием
Старый 10.03.2022, 15:10   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,759
По умолчанию

Кто нибудь работал с обработкой критической ошибки потока через FatalException?

Последний раз редактировалось FaTaL; 10.03.2022 в 16:18.
FaTaL вне форума Ответить с цитированием
Старый 14.03.2022, 14:02   #3
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,759
По умолчанию

Иногда поток завершается с критической ошибкой
Access violation at address 0072DB3D in module 'My.exe'. Read of address 00000000
Самое интересное цикл может отработать и 150 итераций до ошибки, а может и всего 10. Т.е. плавающая ошибка. В цилке get запросы Indy idHTTP. Но если бы была проблема в коде, то ошибка бы наверное при первой же итерации вылазила. А тут может и вовсе не вылезти и поток завершится прекрасно отработав.

Последний раз редактировалось FaTaL; 14.03.2022 в 14:04.
FaTaL вне форума Ответить с цитированием
Старый 31.03.2022, 18:43   #4
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 156
По умолчанию

Ниразу не замечал что-бы 10-ка резала потоки.
Чтобы знать из-за чего валится ваш поток, нужно для начала нормально ошибки обрабатывать, например:
Код:
TMyThread = class(TThread)
  private
    procedure HandleException;
    // ...
  end;

procedure TMyThread.HandleException;
var
  value:Exception;
begin
  try
  value:=Exception(ExceptObject);
  Synchronize(
   procedure
     begin
        if not(value is EAbort) then
          begin
            if value is Exception then
              Application.ShowException(value)
             else
             System.SysUtils.ShowException(value,nil)
          end;
     end
  );
  finally
   value:=nil;
  end;
end;

procedure TMyThread.Execute;
begin
  try
    // ваш код
    // ...	
  except
    HandleException;
  end;
end;
Ну и предположу что у вас indy ловит 503, перенаправление или refuse из-за частоты/монотонности запросов, а в коде нет проверок на nil и тп, вот поток и сыпется в av.
DIONISKA вне форума Ответить с цитированием
Старый 02.04.2022, 13:49   #5
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,759
По умолчанию

Спасибо за подсказку об отлове ошибок. Но ошибка ушла, как я отказался от INDY и переписал поток на THTTPClient
FaTaL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Потоки. Закрываются все потоки при ошибке в одном. Son Общие вопросы Delphi 11 01.11.2013 09:32
Потоки в windows forms. Непонятная ошибка hunter03 Windows Forms 6 27.08.2013 15:12
Собираюсь перейти с Windows на Linux, какой из дистирибутивов наиболее похож на Windows (Xp,7)? ivan.tiran Windows 5 09.03.2012 17:51
Потоки и windows WennY Общие вопросы Delphi 1 01.05.2011 19:57