Форум программистов, компьютерный форум, киберфорум Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/64: Рейтинг темы: голосов - 64, средняя оценка - 4.77
9 / 9 / 3
Регистрация: 11.10.2014
Сообщений: 363

'System Error. Code: 1400. Недопустимый дескриптор окна'

22.07.2016, 19:55. Показов 11837. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пишу многопоточную программу, а при ее закрытии после работы потоков выдает эту ошибку, из-за чего не могу понять, в интернете тоже дельного найти не смог.
В Debug она ссылается на код в System.SysUtils
Delphi Скопировано
1
2
3
4
5
6
7
8
9
10
11
procedure RaiseLastOSError(LastError: Integer; const AdditionalInfo: string); overload;
var
  Error: EOSError;
begin
  if LastError <> 0 then
    Error := EOSError.CreateResFmt(@SOSError, [LastError, SysErrorMessage(LastError), AdditionalInfo])
  else
    Error := EOSError.CreateRes(@SUnkOSError);
  Error.ErrorCode := LastError;
  raise Error;   <--------------
end;
Возможно из-за того что я создаю поток через динамический массив?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.07.2016, 19:55
Ответы с готовыми решениями:

EOSError 1400 "Недопустимый дескриптор окна"
Доброго времени суток. После того как перенес некоторый код в поток при завершении программы стала вылетать ошибка EOSError 1400...

Недопустимый дескриптор окна =)
Все пашет вот только... Обьясняю))) В общем Основное Приложение вызывает SendPPMsg из DLL и все замечательно, если не попытаться закрыть ОП...

Ошибка Exception EOSError in module .... System error. Code: 1400. Invalid window handle.
Доброе время суток! Я использовал поток в приложении CreateThread().. Примерно такая струкура приложения получилась: interface uses ...

2
 Аватар для krapotkin
5903 / 4627 / 1454
Регистрация: 14.04.2014
Сообщений: 20,497
Записей в блоге: 20
22.07.2016, 20:31
приведенный код вообще ни при чем
ошибка возникает скорее всего, когда завершающийся поток пытается обратиться к уже разрушенным объектам
0
Заблокирован
22.07.2016, 21:50
Прежде чем программировать потоки, прочитайте справку по ним, иначе погрязнете в ошибках.
Вот небольшой ман по потокам.

Code Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,syncobjs, contnrs, StdCtrls;
 
type
  TMyThread=class(tthread)
  private
    FTime: integer;
  procedure ThreadTerminated(sender:tobject);
    procedure SetTime(const Value: integer);
  protected
  procedure execute;override;
  public
  property Time:integer read FTime write SetTime;
  constructor create;
  destructor destroy; override;
  end;
 
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  threadlist:tthreadlist;
 
implementation
 
{$R *.dfm}
 
function ThreadsCount:integer;
begin
  result:=threadlist.locklist.Count;
  threadlist.UnlockList;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  threadlist:=tthreadlist.Create;
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
  while ThreadsCount >0 do
  application.ProcessMessages;
  threadlist.Free;
end;
 
{ TMyThread }
 
constructor TMyThread.create;
begin
  inherited create(true); // создаем ожидающий поток, чтобы можно было изменять параметры
  FreeOnTerminate:=true;
  Priority:=tpNormal;
  OnTerminate:=ThreadTerminated;
  ThreadList.Add(self);
end;
 
destructor TMyThread.destroy;
begin
  threadlist.LockList;
 
  /// здесь может быть код, для освобождения объектов
 
 
  inherited;
  threadlist.Remove(self);
  threadlist.UnlockList;
end;
 
procedure TMyThread.execute;
begin
  // код, который должен выполняться в потоке.
  sleep(FTime);
 
end;
 
procedure TMyThread.SetTime(const Value: integer);
begin
  FTime := Value;
end;
 
procedure TMyThread.ThreadTerminated(sender: tobject);
begin
  showmessage('Поток завершил работу');
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  i:integer;
  thread:tmythread;
begin
  for i:=1 to 10 do
  begin
    thread:=tmythread.create;
    thread.Time:=4000;
    thread.Resume;
  end;
end;
 
end.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.07.2016, 21:50
Помогаю со студенческими работами здесь

Недопустимый дескриптор окна
Добрый вечер уважаемые форумчане. Вопрос конечно изъезженный но все таки для себя решения я не смог найти в гугле и на форумах. Поэтому...

Отладка dll [System Error 1400]
Пару дней назад я написал плагин для Google Chrome...Delphi+NPApi. Плагин выводит форму Hellow World (delphi) на html страницу, и все...

System Error. Code 1400. Недопустимый дескриптор окна
Вобщем такая проблема есть БД акссес и программа все рабоет но при закрытии программы выдает ошибку System Error. Code 1400. Недопустимый...

EOSError 1400 “Недопустимый дескриптор окна”
Программа (назовём её My1.exe ) периодически обращается из потока к COM-порту. На компьютере есть и другие программы, которые так же могут...

Недопустимый дескриптор окна. (Обмен сообщениями: TCP)
Доброго времени суток. Есть программа, которая производит обмен сообщениями по сети между несколькими компьютерами (использую TCP...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Сложность Колмогорова: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
PostgreSQL в Kubernetes: Подготовка кластера и настройка
Mr. Docker 20.03.2025
Когда доходит до контейнеризации баз данных и особенно таких требовательных к ресурсам системах как PostgreSQL, многие команды до сих пор колеблются, прежде чем перенести их в контейнерную. . .
C++26: Индексирование пакетов и метапрограммиро­вание
bytestream 20.03.2025
Эволюция C++ продолжается стремительными темпами – каждый новый стандарт приносит функциональность, о которой мы мечтали годами. Звучит слишком громко? Если вы когда-либо боролись с вариадическими. . .
Состояние гонки в C#: подводные камни многопоточного программировани­я
UnmanagedCoder 20.03.2025
Что такое состояние гонки? Это ситуация, когда результат программы непредсказуемо меняется в зависимости от порядка выполнения потоков. Проще говоря, два или более потока пытаются одновременно. . .
Next.js для разработки React: преимущества серверного рендеринга
Reangularity 20.03.2025
Next. js решает классическую проблему React-приложений: медленную первоначальную загрузку и плохую индексацию поисковиками. Вместо того чтобы заставлять браузер пользователя выполнять всю работу по. . .
JUnit или TestNG: Выбираем Java-фреймворк для тестирования
Javaican 20.03.2025
История тестовых фреймворков в Java началась в конце 90-х, когда Кент Бек и Эрих Гамма разработали JUnit - инструмент, который перевернул представление разработчиков о модульном тестировании. JUnit. . .
Разбиваем монолит на два микросервиса и реализуем CI/CD
ArchitectMsa 20.03.2025
Когда команда растет, а функциональность монолита расширяется, поддерживать и развивать такую систему становится все труднее. Разработчики начинают тратить много времени на разбор сложных. . .
Python и PDF: Создание и редактирование файлов
py-thonny 20.03.2025
Работа с PDF-документами – одна из популярных задач в современной разработке. Python предлагает несколько инструментов для создания, чтения и редактирования PDF-файлов, среди которых особенно. . .
Корутины в Unity и производительно­сть WaitForSeconds
GameUnited 20.03.2025
Разработчики игр на Unity часто сталкиваются с вопросом: как выполнять действия через определённые промежутки времени, не блокируя основной поток игры? Тут как раз и приходят на помощь корутины —. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер