Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 11.03.2019
Сообщений: 35

Поток не начинает работать

23.05.2019, 17:50. Показов 3151. Ответов 50

Студворк — интернет-сервис помощи студентам
Здравствуйте, столкнулся с очень необычной штукой, по крайней мере для меня. Созданные потоки и он просто не начинает работать. Даже не думают начинать. Ставил точку останова в Execute, на самую первую строчку, он даже не заходит внутрь.
Привел в низу самый простой код, и поток блин не стартует, просто не понимаю из за чего. Может дело в блоке в котором я создаю этот поток, так как в других блока все создается и работает (Если так то чего не должно быть в блоке, чтобы поток стартовал).
Цикл просто пролетает, создавая классы потоков который просто даже не начинают работать.

Код:
Delphi
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
type
  AThrTri = array[0..9] of TThreadTriangl;
var
  ...
  ATThri: AThrTri;
...
for i := 0 to lt-1 do
    begin
        ATThri[i] := TThreadTriangl.Create(True);
        ATThri[i].FreeOnTerminate := False;
//        ATThri[i].setData(Trin, Shell, cppf, tsdp);
        ATThri[i].Priority := tpLower;
        ATThri[i].Resume;
      end;
    end;
...
//Удаление потоков.
...
 
procedure TThreadM.Execute();
var
  i: Byte;
begin
  { Place thread code here }
  Ok := False; i := 0;
  try
    Inc(i);
  finally
    Ok := True;
  end;
end;
 
//Блок Потока (TThreadM)
 
unit MyThread;
 
interface
 
uses
  System.Classes, TTypes, ClassDepth;
 
type
  TThreadTriangl = class(TThread)
  private
    Ok: Boolean;
    { Private declarations }
  public
    constructor Create(CreateSuspennded: Boolean);
    function IsOk(): Boolean;
  protected
    procedure Execute; override;
end;
 
type
  AThrTri = array[0..9] of TThreadTriangl;
 
implementation
 
{ 
  Important: Methods and properties of objects in visual components can only be
  used in a method called using Synchronize, for example,
 
      Synchronize(UpdateCaption);  
 
  and UpdateCaption could look like,
 
    procedure TThreadTriabgl.UpdateCaption;
    begin
      Form1.Caption := 'Updated in a thread';
    end; 
    
    or 
    
    Synchronize( 
      procedure 
      begin
        Form1.Caption := 'Updated in thread via an anonymous method' 
      end
      )
    );
    
  where an anonymous method is passed.
  
  Similarly, the developer can call the Queue method with similar parameters as 
  above, instead passing another TThread class as the first parameter, putting
  the calling thread in a queue with the other thread.
    
}
 
{ TThreadTriabgl }
 
constructor TThreadTriangl.Create(CreateSuspennded: Boolean);
begin
  inherited Create(CreateSuspennded);
  Ok := True;
  PTriw := nil;
  PShell := nil;
end;
 
procedure TThreadTriangl.Execute();
begin
.. Указано в начале
end;
 
function TThreadTriangl.IsOk(): Boolean;
begin
  Result := Ok;
end;
 
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.05.2019, 17:50
Ответы с готовыми решениями:

После старта потока файл начинает загружаться, после чего поток зависает
Доброго времени суток! Помогите найти ошибку. После старта потока файл начинает загружатся а после чего поток зависает .... ...

Почему запуская службу, по факту она начинает работать только спустя 50 - 60 секунд?
Всем доброго времени суток, прошу у Вас помощи. Ситуация следящая: Приложение создает и запускает службу. Служба создается и запускается...

Программа начинает неправильно работать после открытия её в Delphi XE8
Подскажите пожалуйста, почему программа созданная в Borland Delphi 7, которая работает правильно после открытия её в Delphi XE8 начинает не...

50
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
24.05.2019, 12:14
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Jomaxplayer Посмотреть сообщение
Тестовый проект работает, РАБОТАЕТ.
У нас не принято верить джентльменам на слово.
Если ты просишь помощи у неограниченного круга неустановленных лиц, обеспечь их необходимой инфой, с помощью которой твою ошибку будет возможно смоделировать. Это нужно для поиска причины её возникновения.
------
Если тестовый проект работает, то это не тестовый проект. И ошибка в другой части кода, который в тестовый не входит.

Добавлено через 2 минуты
Кстати, почему я вижу вот это определение в 2х местах?
Delphi
1
2
type
  AThrTri = array[0..9] of TThreadTriangl;
0
0 / 0 / 0
Регистрация: 11.03.2019
Сообщений: 35
24.05.2019, 12:20  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
Если ты просишь помощи у неограниченного круга неустановленных лиц, обеспечь их необходимой инфой, с помощью которой твою ошибку будет возможно смоделировать. Это нужно для поиска причины её возникновения
Вижу, ты видишь, во мне то что видишь. Но Вынес я в отдельный тест и он там работает, но когда запускаю это в опубликованном мной классе, то происходит непонятная херня с которой ни кто не сталкивался ни разу, так как ни ошибок, ни варнингов, ничего нет.

Цитата Сообщение от Verevkin Посмотреть сообщение
Кстати, почему я вижу вот это определение в 2х местах?
DelphiВыделить код
1
2
type
* AThrTri = array[0..9] of TThreadTriangl;
Только в одном месте, в Блоке Потока.
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
24.05.2019, 12:26
Цитата Сообщение от Jomaxplayer Посмотреть сообщение
Только в одном месте, в Блоке Потока.
Дыа?

0
0 / 0 / 0
Регистрация: 11.03.2019
Сообщений: 35
24.05.2019, 12:31  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
Дыа?
С верху было краткое описание, которое взято из блока потока. И вставлено вверх, если человеку лень все листать, а полный блок был вставлен ниже, вот вы и видите его два раза, но на самом деле, он прописан один раз.
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
24.05.2019, 12:36
Цитата Сообщение от Jomaxplayer Посмотреть сообщение
но на самом деле, он прописан один раз.
Де-юро это называется "введение в заблуждение". Не делай так.
----------
Если тестовый проект не дашь, то, хотя бы, выбрось массив и создай список.
0
0 / 0 / 0
Регистрация: 11.03.2019
Сообщений: 35
24.05.2019, 12:45  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
Де-юро это называется "введение в заблуждение". Не делай так.
Понял, не буду.

Цитата Сообщение от Verevkin Посмотреть сообщение
хотя бы, выбрось массив и создай список.
Сделал, думал что то изменить, но увы хоть и выглядит более красиво, но результать не изменился Creat потока проходит, а вот Execute так и не выполняется.

Цитата Сообщение от Verevkin Посмотреть сообщение
тестовый проект не дашь
Тест работает, давать нет смысла, то что и так работает. Спасибо за уделенное время.
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
24.05.2019, 12:50
Цитата Сообщение от Jomaxplayer Посмотреть сообщение
Спасибо за уделенное время.
Заходи ещё.
1
882 / 404 / 173
Регистрация: 20.10.2016
Сообщений: 1,828
24.05.2019, 14:25
Итого:
1) код не работает
2) конструктор отрабатывает
3) Execute не отрабатывает
4) если скопировать код потока в другой проект и запустить, то поток работает.

Вердикт: вы где-то чего-то недоговариваете.
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
24.05.2019, 14:28
Цитата Сообщение от Nanotentacle Посмотреть сообщение
Вердикт: вы где-то чего-то недоговариваете.
Ага! Как третья черепаха! ©
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 21
24.05.2019, 14:31
и рекомендую все-таки поменять саму схему работы с потоками на ремонтопригодную
запустил - забыл. установил статус "все в работе", поставил крутилку и больше ничего не делать
ни циклов, ничего.

все действия производить на выходе из потока
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
25.05.2019, 02:38
Цитата Сообщение от Jomaxplayer Посмотреть сообщение
Тест работает, давать нет смысла
Это значит только то, что вы не смогли сделать этот тестовый проект. Скорее всего потому что искали причину ошибки не там, где она есть, а там где "светло". В таком случае у вас есть два выхода. Либо представить проект целиком, либо уповать на тех богов, в которых вы верите. Включая Ктулху.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.05.2019, 02:38

Поток - Thread, как с ним работать
Здравствуйте, Нужно создать (отдельный модуль) поток(с отображением Progressbar'ом) с одной функцией проверкой на существование файлов в...

Как начинает работать Task?
Люди помогите не могу понять как работает Task когда я передаю поток спомощью Task.ContinueWith() ?

Начинает медленно работать Java программа
Вот смотрите пишу программу по SMPP. Главный поток выдерает из базы 150смс и начинает их рассылать путем создания ExecutorService. Потом...

Когда начинает работать изменение контента?
Прошел ап, в кэше яндекса обновился контент на новый (изменились заголовки, убавилось кол-во ключевых фраз и че-нить еще). В этот ап сразу...

Компьютер начинает медленно работать в игре.
Созрел вопрос. На днях заметил, что когда я играю в одну компьютерную игрушку (Empire total war) стал тупить комп (дёргаться изображение то...


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

Или воспользуйтесь поиском по форуму:
51
Ответ Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru