Текущий архив: 2005.01.16;
Скачать: CL | DM;
ВнизИдентификатор потока. Найти похожие ветки
← →
SbtON (2004-12-27 12:55) [0]Добрый день!
Подскажите, если не затруднит:
Как узнать состояние работы потока в главной форме? и как задавать идентификатор потока, для того чтобы из главной формы можно было легко приостанавливать и запускать снова?
Существует 10 потоков, их и надо контроллировать, потоки абсолютно идентичны (экземпляры), но запускаются с разными входными параметрами..
← →
SbtON (2004-12-27 13:44) [1]Ответь-те же....... :(
Прям горю весь.. :]
← →
Digitman © (2004-12-27 13:50) [2]
> состояние работы потока
что под "состоянием" подразумевается ?
> потока в главной форме
ни в главной ни в неглавной формах нет никаких потоков.
> как задавать идентификатор потока
какого ?
> чтобы из главной формы можно было легко приостанавливать
> и запускать снова?
хоть из главной хоть из неглавной приостанов/возобновление выполнения код.потока осуществляется вызовом SuspendThread(WinAPI) или TThread.Suspend(VCLAPI)
← →
SbtON (2004-12-27 13:56) [3]>что под "состоянием" подразумевается ?
состояние: работает/не работает..
>ни в главной ни в неглавной формах нет никаких потоков.
Я имел ввиду, чтобы из формы, руками оператора запускать поток и останавливать, но выбирая точно, какой поток..
>> как задавать идентификатор потока
>какого ?
Всех 10-ти. Как мне определить что запущен тот поток, который нужен? Может пр запуске что-то сообщить ему?
← →
Digitman © (2004-12-27 14:02) [4]
> руками оператора
оператор это кто ? юзер что ли ?
а юзеру оно надо - знать о каких-то там "потоках" ?
> Всех 10-ти
а если их у тебя будет 20 ?
← →
SbtON (2004-12-27 14:07) [5]Так о том и речь.. Результаты выполнения потока садятся в стрингГрид и нужны для контроля выполнения, при этом юзер может приостановить каждый поток (поток ему не нужен, нужен результат), для запуска есть входной параметр, который читается из первой колонки StringGrida, остальные колонки - результат выполнения..
← →
Digitman © (2004-12-27 14:13) [6]
> при этом юзер может приостановить каждый поток
это зачем ? ему результат что ли не нужен более ?
и вообще - трэды эти ты как создаешь ? средствами VCL или API ?
← →
SbtON (2004-12-27 14:28) [7]Результат ему дает понять, что задуманной не осуществилось и он применяет другие рычаги воздействия! ;)
Трэды VCL..
Рассказываю суть:
Прога запускается и трэдами сканит директории и "типа" мультипоточно сливает файлы на FTP сервера..
Список FTP-серверов фиксирован и подгружается из ini-шников в первую колонку StringGrid"a.. Далее нужно (опять исходя из инишника) запустить нужные трэды и пусть сканют..(трэд запускается с паарметром имени в первой колонке - а это группа в инишнике) Но нужно иметь возможность включить ранее не работавшие и выключить ненужные..
← →
Digitman © (2004-12-27 14:37) [8]
> Результат ему дает понять
так ведь если трэд приостановить, он и результата не сформирует .. ибо он не работает в это время) ..
> применяет другие рычаги воздействия
на кого ?!
> Трэды VCL
объекты класса TThread имеет методы Suspend/Resume
← →
SbtON (2004-12-27 14:39) [9]Так если есть проблемы с коннектом, зачем дальше сканить? Юзер выключает трэд.. Но как? Как мне определить какой вырубить.. Я через PopUp меню на таблице делаю выключение, но какой трэд гасить? Вот в чем проблема.. Можно же все прибить.. А надо только один, а остальные пусть и работают дальше.. :)
← →
Digitman © (2004-12-27 14:54) [10]
> SbtON (27.12.04 14:39) [9]
вопросов к твоей логике а-ля "гасить", "прибить" - куча ..
вот только стоит ли их задавать ... логика, чувствуется, крива изначально ..
а конкретно по теме "Как мне определить какой вырубить" - это тебе лучше знать, ибо именно ТЫ создаешь VCL-трэды и получаешь ссылки на каждый из них, для каждой из которых далее можно считывать св-во Suspended и применять методы св-во Suspend/Resume
← →
SbtON (2004-12-27 14:58) [11]Ну я же изначально и спрашивал.. С трэдами раньше не работал.. У меня их несколько экземпляров, создаются в входным параметром и работает.. Но я не пойму как однозначно определить Thread.. Где ссылки-то эти?
← →
Digitman © (2004-12-27 15:00) [12]
> Где ссылки-то эти?
известно где - в Караганде ..
ты сподобился ли по сей момент фрагмент кода создания трэда привести ?
нет ?
ну так а чего ж тебе еще надобно, старче ?
← →
SbtON (2004-12-27 15:07) [13]Злой ты! ;)
type
TFtpThread = class(TThread)
NMF : TNMFTP;
flbThread : TFileListBox;
private
FAbon:string;
st:string;
{ Private declarations }
protected
procedure Execute; override;
public
constructor Create(Abon:string);
end;
implementation
uses ufMain;
constructor TFtpThread.Create(Abon:string);
Begin
inherited Create(True);
FreeOnTerminate:=True;
FAbon:=Abon;
Self.Priority:=tpNormal;
Resume;
End;
procedure TFtpThread.Execute;
const mask="*.*";
var ini : TInifile;
fa:integer;
lf:string;
и т.д.
Сам Thread из формы пока запускается как
TFtpThread.Create("xxx");
Со строковым параметром..
← →
Digitman © (2004-12-27 15:30) [14]
> Злой ты
не демонстрируй тупость - и никто никогда для тебя злым не будет.
> Сам Thread из формы пока запускается как
> TFtpThread.Create("xxx");
тебе про ссылку был мой вопрос ? или не был ?
ты вообще-то в курсе, что конструирующий метод (каковым является в т.ч. и метод TFtpThread.Create) является ФУНКЦИОНАЛЬНЫМ методом ?
ты в курсе, что функциональный метод объекта, точно так же как и обыкновенная ф-ция, возвращает результат ?
ну так а какого же .. ты не фиксируешь этот результат ?
какого .. ты вызываешь функц-ный метод класса как процедурный, теряя рез-т его выполнения ?
← →
Digitman © (2004-12-27 15:32) [15]
> Прям горю весь
вот оно и видно - мол, нафих мне справки да книжки дурацкие читать, мне. мол, прямо щас нада, потому что, мол, невтерпеж слепить то чего пока не понимаю
← →
SbtON (2004-12-27 15:40) [16]О! Теперича понял.
Кстати, понимаю что хочу слепить, но уровень программирования низок.. это факт. Размазывать меня не имеет смысла, поскольку на это мне не стоит обижаться - программирование не мой конек, а вот от помощи не отказался бы.. Программа действительно нужна и можно было бы и без потоков обойтись, но пока есть желание сделать что-нибудь посложнее одноформенных приложений.. Хотя и их у меня мало..
← →
Digitman © (2004-12-27 15:49) [17]
> что-нибудь посложнее одноформенных приложений
тогда тебе следует на полном серьезе разобраться со следующим утверждением :
термин "одноформенное приложение" НЕ имеет никакой связи с термином "однопоточное приложение"
равно как и термин "однопоточное приложение" НЕ имеет никакой связи с термином "одноформенное приложение"
← →
SbtON (2004-12-27 15:57) [18]Может у тебя ICQ есть? мой 316040706
А то у нас в форуме какая-то полемика..
← →
Digitman © (2004-12-27 16:00) [19]
> SbtON (27.12.04 15:57) [18]
а может у тебя пример мультипоточного придожения есть ? в демо-проекте threads.dpr ? а должен быть, кстати ..
← →
SbtON (2004-12-27 16:02) [20]есть! ;)
Давай уже аську, злодей! :))
← →
Digitman © (2004-12-27 16:06) [21]
> SbtON (27.12.04 16:02) [20]
> есть! ;)
вот и разбери его сначало по ниточкам ..
> Давай уже аську
"давалка" уже сломалась, "добродей"
← →
SbtON (2004-12-27 16:10) [22]Эх.. вот так всегда..
Люди все злые какие-то.
← →
Digitman © (2004-12-27 16:46) [23]
> SbtON (27.12.04 16:10) [22]
нет ну а в чем проблема-то ?
что-то конкретное непонятно ? пожалуйста ! задавай вопрос сюда .. любо-дорого помочь конкретным ответом на конкретный вопрос ..
← →
Alexander Panov © (2004-12-27 17:28) [24]SbtON (27.12.04 15:40) [16]
Поищи здесь на сайте статьи по потокам.
Страницы: 1 вся ветка
Текущий архив: 2005.01.16;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.039 c