Форум: "Начинающим";
Текущий архив: 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