Multithreading

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
vik
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 23.03.2003 (Вс) 17:15

Multithreading

Сообщение vik » 31.03.2003 (Пн) 8:11

Как послать в другой поток целую форму ( не отдельную функцию , а иммено форму)?
И по-какому потоку пойдут все функции с этой формы?

Tauron
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 187
Зарегистрирован: 14.07.2002 (Вс) 17:43
Откуда: Kazakhstan

Сообщение Tauron » 31.03.2003 (Пн) 9:54

Я так полагаю, что надо загружать (Load FormX) из другого потока. Хотя это, конечно, только предположение.
Трезвая голова, холодный ум и ледяное сердце.

vik
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 23.03.2003 (Вс) 17:15

Сообщение vik » 31.03.2003 (Пн) 10:12

Каким образом ? Ведь вызываемые функции должны быть в модуле.....

Tauron
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 187
Зарегистрирован: 14.07.2002 (Вс) 17:43
Откуда: Kazakhstan

Сообщение Tauron » 31.03.2003 (Пн) 17:29

Что значит каким образом?. Ведь пишешь же ты где-то Load FormX, чтобы загрузить форму (если она конечно не дефолтовая). Ну так и напиши это в функции, с которой запускается новый поток. Хотя за результат, как уже было написано выше, не отвечаю.
Трезвая голова, холодный ум и ледяное сердце.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 31.03.2003 (Пн) 17:35

Вообще то, как это уже неоднократно указывалось и не только на этом форуме, между прочим: multithreading в VB 6 это лучший способ самоубийства. Есть задачи, для решения которых эта платформа не подходит в принципе. Real time monitoring из числа этих задач. Если их надо решать - С++ в руки и вперед.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 01.04.2003 (Вт) 14:20

НУ, уважаемый гуру, вы загнули...
Надо разделить прогу на exe и Activex.exe(поток на объект)
создавать прикаждом вызове новый объект и передавать вызовы асинхронно в объект для этого подходит COM+
,а если без него, передача в объект должна быть такой

Class---------------------
Private MyForm as frmForm1

Public Sub MyMethod(ob as Object)

Set MyForm =New frmForm1
Load myform

Set MyForm.MyParam=ob

MyForm.Timer.Interval=1
MyForm.Timer.Enabled=true '!!!!! Вызов метода в отдельном потоке

end sub

и в процедуре таймера будет отдельный поток..
Незабудте перед убивание класса выгрузить форму и объект..

Всё просто))))))
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Colonel
Обычный пользователь
Обычный пользователь
 
Сообщения: 63
Зарегистрирован: 15.11.2002 (Пт) 12:39
Откуда: Russia

Сообщение Colonel » 01.04.2003 (Вт) 15:50

Sebas писал(а):НУ, уважаемый гуру, вы загнули...
Надо разделить прогу на exe и Activex.exe(поток на объект)
создавать прикаждом вызове новый объект и передавать вызовы асинхронно в объект для этого подходит COM+


Это все конечно хорошо, но вот допустим как на VB реализовать следующее:
На com порт повешен мультиплексер(расширитель портов) допустим на 10 доп. портов. Через каждый отдельный порт принимаются и передаются данные о состоянии аппаратуры. Всю информацию нужно ставить в очередь, постоянно снимать статусы. Все это необходимо сделать в потоках - иначе никак :)
Если ты это реализуешь корректно на VB - то поделись опытом, как это сделать :)
Реально нормальную многопоточность на VB не реализуешь - конечно это мое ИМХО- однако слишком много народу над этим уже билось :)

vik
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 23.03.2003 (Вс) 17:15

Сообщение vik » 01.04.2003 (Вт) 19:57

2Sebas
Извените за тупость(большого опыта нет) , но .......
Мне нужно форм из форма , а лучше из меню форма ,,
если можно по подробнее или готовый пример.
И что значит ".......
Незабудте перед убивание класса выгрузить форму и объект..
",? не сильно понятно

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 02.04.2003 (Ср) 9:52

Это, конечно, чисто мое субъективное мнение, но если ты спрашиваешь такоие вопросы, то рановато тебе еще с мультитредингом разбираться ;) Потому что надо подучить матчасть сперва ;)



Это означает что перед тем как уничтожать созданный тобой объект, надо сперва уничтожить порожденные им объекты. Это азбука программирования под винды ;)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 42

    TopList