Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.07;
Скачать: CL | DM;

Вниз

Поток(TThread)   Найти похожие ветки 

 
ooops   (2006-04-18 03:23) [0]

Привет всем!!!!!!!!!!!!!
program Project1;
uses
Forms,
 unit1 IN "unit1" {Forma1}
 unit2 IN "unit2" {Forma2}
 unThread IN "myThread";
и т.д.

begin
Application.Initialize;
1 проверка наличия ключа в ком. строке
  создаю форму - forma1
2 проверка наличия ключа в ком. строке
  создаю форму - forma2
3 проверка наличия ключа в ком. строке
  создаю поток - myThread //НЕ РУЛИТ!!!!!
Application.Run;
{ЕСЛИ ВМЕСТЕ С ПОТОКОМ СОЗДАТЬ ФОРМУ, то рулит}
end;

{ДА, ЕЩЁ, НА МОМЕНТ СОЗДАНИЯ myThread, ОПРЕДЕЛЕНА ПЕРЕМЕННАЯ - ДЕСКРИПТОР ОКНА(HWND), С КОТОРЫМ ПОТОК, ПО ИДЕЕ, ДОЛЖЕН РАБОТАТЬ}

ВОПРОС:
КАК БЫ ЗАПУСТИТЬ ЭТОТ ПОТОК, БЕЗ СОЗДАНИЯ ДОПОЛНИТЕЛЬНЫХ ОБЬЕКТОВ И Т.Д. МОЖЕТ


 
balepa ©   (2006-04-18 06:37) [1]

А поток обязательно там создавать ?
И вообще как ты поток создаеш ?


> {ДА, ЕЩЁ, НА МОМЕНТ СОЗДАНИЯ myThread, ОПРЕДЕЛЕНА ПЕРЕМЕННАЯ
> - ДЕСКРИПТОР ОКНА(HWND), С КОТОРЫМ ПОТОК, ПО ИДЕЕ, ДОЛЖЕН
> РАБОТАТЬ}

Я не знаю какие у тебя там идеи.

Привиди нормальный код


 
Сергей М. ©   (2006-04-18 10:00) [2]


> ooops   (18.04.06 03:23)


Прямо так и запустить :

MyThread := TMyThread.Create(ДЕСКРИПТОР ОКНА(HWND), С КОТОРЫМ ПОТОК, ПО ИДЕЕ, ДОЛЖЕН РАБОТАТЬ);


 
ooops   (2006-04-18 16:14) [3]

СУТЬ ВОПРОСА НЕ В ТОМ, ЧТО НАДО СОЗДАТЬ ПОТОК И КАК ЕГО СОЗДАТЬ,
А В ТОМ, ЧТО - НУЖНО ЕГО ОСТАВИТЬ РАБОТОСПОСОБНЫМ ПРИ ЗАКРЫТИИ
ПРИЛОЖЕНИЯ.


Извините за не правильно поставленный вопрос, время было познее :-)


> А поток обязательно там создавать ?
> И вообще как ты поток создаеш ?


MyThread := TThread.Create(True);
with MyThread do
begin
 fHWND := ДЕСКРИПТОР ОКНА(HWND);
end;
MyThread.Resume;


 
ooops   (2006-04-18 16:17) [4]

или, может, как то заставить приложение не закрываться пока поток не закроется


 
Мефисто   (2006-04-18 16:38) [5]

НУЖНО ЕГО ОСТАВИТЬ РАБОТОСПОСОБНЫМ ПРИ ЗАКРЫТИИ
ПРИЛОЖЕНИЯ.

Это точно также, чтобы таймер работал когда комп вырублен :)

>> Create (True)
Определи параметры конструктора какие надо и передавай чего хочешь...


 
Сергей М. ©   (2006-04-18 16:47) [6]


> ooops   (18.04.06 16:14) [3]
>
> НУЖНО ЕГО ОСТАВИТЬ РАБОТОСПОСОБНЫМ ПРИ ЗАКРЫТИИ
> ПРИЛОЖЕНИЯ.


Кодовый поток не может существовать сам по себе, он существует пока существует процесс, создавший этот поток.

Нет процесса - нет и потока.

Запуск приложения ведет к созданию соотв.процесса, завершение приложения ведет к завершению соотв.процесса. Завершение процесса же безусловно ведет к уничтожению всех кодовых потоков, существовавших в контексте процесса во время его жизни.

p.s.

И не надо так кричать - тебя прекрасно слышно)


 
ooops   (2006-04-18 16:56) [7]

Значить
> Кодовый поток не может существовать сам по себе, он существует
> пока существует процесс, создавший этот поток.


Это я знаю, поэтому он и не рулит без создания формы,
а при созданной форме - рулит!

Тогда как заставить процесс не завершаться, пока поток не заверниться.

Простите за крики, теперь просвещен - про КРИКИ


 
Сергей М. ©   (2006-04-18 17:01) [8]


> поэтому он и не рулит без создания формы,
> а при созданной форме - рулит!


Процесс - объект ОС, форма - объект Borland VCL.

Процесс существует сам по себе и не обязан знать ни про какие борланды и ни про какие VCL и всякие там "формы".

Если у тебя что-то "не рулит" - показывай в коде.


> заставить процесс не завершаться, пока поток не заверниться


Если поток создан, следует дождаться его завершения.
А уж как ждать - это зависит от того как ты реализовал класс своего потока.


 
ooops   (2006-04-18 17:15) [9]

созданный поток работает с окном - (дескриптор окна(hwnd))
//из другого приложения
и должен завершиться если это окно закрылось, а вот тогда можно
и приложению закрываться


 
Leonid Troyanovsky ©   (2006-04-18 23:37) [10]


> Сергей М. ©   (18.04.06 16:47) [6]

>  создавший этот поток.


содержащий этот поток.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2006-04-19 00:02) [11]


> ooops   (18.04.06 17:15) [9]

> созданный поток работает с окном - (дескриптор окна(hwnd))


Созданному потоку весьма сложно работать с окнами
чужого приложения, бо это окна других потоков, а
на этом пути существует много ограничений.

--
Regards, LVT.


 
Сергей М. ©   (2006-04-19 08:56) [12]


> Leonid Troyanovsky ©   (18.04.06 23:37) [10]


> содержащий


Поправка принята.


> Созданному потоку весьма сложно работать с окнами
> чужого приложения


Вероятно, автор, под "работой с окном чужого приложения" подразумевает всего лишь отправку этому окну сообщений.


> ooops   (18.04.06 17:15) [9]


> должен завершиться если это окно закрылось


И как ты себе мыслишь определение факта закрытия "чужого" окна ?
Как минимум глоб.хук нужно устанавливать для этого ..


 
GrayFace ©   (2006-04-19 15:25) [13]

По идее, процесс и так не должен завешаться, пока не завершатся все потоки. Наверное, все дело в 17-й стролке.


 
ANB ©   (2006-04-19 15:29) [14]


> ooops   (18.04.06 03:23)

Прочитал ветку.
Если не тяжело - напиши по русски, что должна делать программа (без потоков и прочих технических подробностей реализации). Весьма вероятно, есть более простое решение, чем создать дополнительный поток при отсутствии основного :)



Страницы: 1 вся ветка

Текущий архив: 2006.05.07;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.028 c
2-1145525063
Beglec
2006-04-20 13:24
2006.05.07
TEdit - печать с права на лево


2-1145622871
Коля
2006-04-21 16:34
2006.05.07
выделить строчку Combobox


15-1144914947
Kolan
2006-04-13 11:55
2006.05.07
Как принудитеьно запустить скан диск.


2-1144954625
Couter Terranist
2006-04-13 22:57
2006.05.07
Помогите с SQL-запросом


2-1145362556
Std
2006-04-18 16:15
2006.05.07
Работа с несколькими потоками