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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2022, 13:36   #1
unreal2x
Пользователь
 
Аватар для unreal2x
 
Регистрация: 22.01.2012
Сообщений: 39
По умолчанию Потоки

Нужна помощь... Читаю файл, в листвью по колонкам... В потоке.

Когда закрываю программу, при выполнии потока, выдает ошибку
Код:
RaiseLastOSError(GetLastError, '');
Ок.
Использую на OnClose - паузу, suspend.
Теперь при работе потока, когда закрываю программу ошибок нет. Но ошибка теперь если я закрываю SelectDirectory не выбрав папку.
ОК.
Теперь после выполнения потока, закрываю программу - пишет: неверный дескриптор
Код:
raise EThread.CreateResFmt(@SThreadError, [SysErrorMessage(ErrCode), ErrCode]);
ОК.
Добавляю в потоке вконце, после выполнения чтения файла в листвью...
Код:
ThreadBegin.Suspend
.

Итого используя код:

Код:
type MyThread=class(TThread)
private
protected
procedure Execute;override;
end;

var
ThreadBegin:MyThread;

procedure MyThread.Execute;
begin

 if SelectDirectory('Выберите папку:', '', sourcedir) then
 begin
 // ТУТ ЧТЕНИЕ С ФАЙЛА В КОЛОНКИ LISTVIEW
 end;


showmessage('Завершено.');
 ThreadBegin.Suspend;
end;

procedure TForm1.N1Click(Sender: TObject);
begin
ThreadBegin:=MyThread.Create(False);
ThreadBegin.Resume;
ThreadBegin.Priority:=tpNormal;
ThreadBegin.FreeOnTerminate:=true;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin

 if not (ThreadBegin = nil) then
 begin
 ThreadBegin.Suspend;
 end;

end;
Открыл/закрыл программу - ОК.
Открыть папку (не выбрал папку, закрыл окно), закрыть программу - ошибка Thread Error: Неверный дескриптор (6)
Выбрал папку, закрываю программу - ОК.
Закрытие программы, после выполнения потока - ОК.
no sleep.

Последний раз редактировалось unreal2x; 16.12.2022 в 13:44.
unreal2x вне форума Ответить с цитированием
Старый 26.01.2023, 15:17   #2
cybernewbie
Пользователь
 
Регистрация: 01.10.2022
Сообщений: 63
По умолчанию

Цитата:
Сообщение от unreal2x Посмотреть сообщение
Открыть папку (не выбрал папку, закрыл окно), закрыть программу - ошибка Thread Error: Неверный дескриптор (6)
Может просто обрабатывать исключения?
Код:
try
 if SelectDirectory('Выберите папку:', '', sourcedir) then
 begin
 // ТУТ ЧТЕНИЕ С ФАЙЛА В КОЛОНКИ LISTVIEW
 end;
except
end;
Вроде должно помочь.

p.s. Вполне вероятно что уже не актуально.

Последний раз редактировалось cybernewbie; 26.01.2023 в 15:22.
cybernewbie вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Потоки. Закрываются все потоки при ошибке в одном. Son Общие вопросы Delphi 11 01.11.2013 09:32
Потоки в C++ DENISER Общие вопросы C/C++ 0 16.04.2013 22:25
Потоки Djeka(c) Помощь студентам 13 28.10.2010 08:28
потоки sergei64_89 Помощь студентам 2 20.10.2010 02:08
Потоки _PROGRAMM_ Помощь студентам 9 26.09.2010 19:27