Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Thread одновременный Добавлено: 26.03.04 13:18  

Автор вопроса:  Диман | Web-сайт: www.dimon1int.narod.ru | ICQ: 224590251 

hello2all,

У меня с сабжем проблема. Имеется класс, в нём функция без параметров. Она вызывает в цикле другие функции - члены того же класса. Я создаю массив элементов этого класса, с помощью CreateThread создаю потоки и прога вылетает. Подскажите другое решение организации потоков или решение проблемы этого. Буду благодарен даже за кинутый в мя линк.

Ответить

  Ответы Всего ответов: 11  

Номер ответа: 1
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #1 Добавлено: 26.03.04 13:23

VB 6.0 работает с потоками НЕ стабильно. Об этом сам мелкосоп говорит постоянно. Кстати VB 5.0 лучше относится к CreateThread чем шестерка....

Ответить

Номер ответа: 2
Автор ответа:
 Диман



ICQ: 224590251 

Вопросов: 29
Ответов: 64
 Web-сайт: www.dimon1int.narod.ru
 Профиль | | #2
Добавлено: 26.03.04 14:13

Да об этом я знаю. Но потоки срочно нужны. Подскажите пиплы!!!!!!!

Ответить

Номер ответа: 3
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #3 Добавлено: 26.03.04 14:30

Я бы не советовал. Лучше используй DoEvents.

Если уж так надо - могу намылить класс для потоков, я его использовал, правда, немного подправлял. Исправленного щас тут нет, но оригинал могу кинуть. Работает вполне стабильно, только с завершением иногда глюки бывают - не завершается, остается в памяти. Если хошь - подправь.

P.S. Если надо - давай мыло, в профайл лом лезть.

Ответить

Номер ответа: 4
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #4
Добавлено: 26.03.04 17:17

Нет, потоки создаются, все работает нормально, то только при МИНИМАЛЬНЫХ вызовах функций из msvbvm.60.dll, если хочешь использовть потоки, желательно забыть про все стандартные функции VB, и использоать только API...

Ответить

Номер ответа: 5
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #5 Добавлено: 29.03.04 09:36

Да создаются они ок, и работают тоже, а вот завершение...

Даже если ты ничего кроме операций присваивания в него не включишь, все равно великий шанс у него глюкануть.

Ответить

Номер ответа: 6
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #6
Добавлено: 30.03.04 01:29

Ага, например, если присваивать строки :)

Ответить

Номер ответа: 7
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #7 Добавлено: 30.03.04 08:59

Да что угодно. Это крайне не стабильное занятие... :(

Ответить

Номер ответа: 8
Автор ответа:
 Диман



ICQ: 224590251 

Вопросов: 29
Ответов: 64
 Web-сайт: www.dimon1int.narod.ru
 Профиль | | #8
Добавлено: 31.03.04 21:52

А AxIThread - работает? Если я буду вызывать такие функции, на которыхх он взвисает таким образом: врубаю массив таймеров они крутятся и чекают переменную. Когда надо будет вызвать функцию, я делаю True этой переменной и таймерок срабатывает, исполняя функцию. Это уже будет исполнение не из треда а из таймера. Можно даже сделать переменную в Enum, это будет даже круче - одним таймером можно запускать несколько разных функций, в зависимости от значения переменной. Ну как? Или не заработает?

Ответить

Номер ответа: 9
Автор ответа:
 Диман



ICQ: 224590251 

Вопросов: 29
Ответов: 64
 Web-сайт: www.dimon1int.narod.ru
 Профиль | | #9
Добавлено: 31.03.04 21:52

А AxIThread - работает? Если я буду вызывать такие функции, на которыхх он взвисает таким образом: врубаю массив таймеров они крутятся и чекают переменную. Когда надо будет вызвать функцию, я делаю True этой переменной и таймерок срабатывает, исполняя функцию. Это уже будет исполнение не из треда а из таймера. Можно даже сделать переменную в Enum, это будет даже круче - одним таймером можно запускать несколько разных функций, в зависимости от значения переменной. Ну как? Или не заработает?

Ответить

Номер ответа: 10
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #10 Добавлено: 01.04.04 09:00

Ну а ты попробуй, пусти функцию вроде большого цикла, которая напроч форму вешает - и проверь.

Мы тут вообще то про Thread'ы говорили, а не про подобный изврат.

Лучше уж юзай DoEvents.

Ответить

Номер ответа: 11
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #11
Добавлено: 01.04.04 09:50

Если уж говорить о thread'ах, то можно использовать и др. функцию, пусть она странная, карявая, но з то работает...

Public Const CTF_COINIT = &H8

Public Const CTF_INSIST = &H1

Public Const CTF_PROCESS_REF = &H4

Public Const CTF_THREAD_REF = &H2

Declare Function SHCreateThread Lib "shlwapi.dll" (ByVal pfnThreadProc As Long, pData As Any, ByVal dwFlags As Long, ByVal pfnCallback As Long) As Long

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам