Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.05.07;
Скачать: [xml.tar.bz2];

Вниз

Поток(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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.009 c
2-1145450651
Zidane5
2006-04-19 16:44
2006.05.07
Word


3-1142576870
SLP
2006-03-17 09:27
2006.05.07
Отмена предупреждающего окна Excel


15-1144844444
tria
2006-04-12 16:20
2006.05.07
Мультиязычность приложения


2-1145516457
Xmen
2006-04-20 11:00
2006.05.07
Не получается с записью данных


15-1144734860
DelphiN!
2006-04-11 09:54
2006.05.07
Книга по Visual Studio 2005





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский