Страница: 1 |
hello2all, У меня с сабжем проблема. Имеется класс, в нём функция без параметров. Она вызывает в цикле другие функции - члены того же класса. Я создаю массив элементов этого класса, с помощью CreateThread создаю потоки и прога вылетает. Подскажите другое решение организации потоков или решение проблемы этого. Буду благодарен даже за кинутый в мя линк.
VB 6.0 работает с потоками НЕ стабильно. Об этом сам мелкосоп говорит постоянно. Кстати VB 5.0 лучше относится к CreateThread чем шестерка.... Да об этом я знаю. Но потоки срочно нужны. Подскажите пиплы!!!!!!! Я бы не советовал. Лучше используй DoEvents. Если уж так надо - могу намылить класс для потоков, я его использовал, правда, немного подправлял. Исправленного щас тут нет, но оригинал могу кинуть. Работает вполне стабильно, только с завершением иногда глюки бывают - не завершается, остается в памяти. Если хошь - подправь. P.S. Если надо - давай мыло, в профайл лом лезть. Нет, потоки создаются, все работает нормально, то только при МИНИМАЛЬНЫХ вызовах функций из msvbvm.60.dll, если хочешь использовть потоки, желательно забыть про все стандартные функции VB, и использоать только API... Да создаются они ок, и работают тоже, а вот завершение... Даже если ты ничего кроме операций присваивания в него не включишь, все равно великий шанс у него глюкануть. Ага, например, если присваивать строки Да что угодно. Это крайне не стабильное занятие... А AxIThread - работает? Если я буду вызывать такие функции, на которыхх он взвисает таким образом: врубаю массив таймеров они крутятся и чекают переменную. Когда надо будет вызвать функцию, я делаю True этой переменной и таймерок срабатывает, исполняя функцию. Это уже будет исполнение не из треда а из таймера. Можно даже сделать переменную в Enum, это будет даже круче - одним таймером можно запускать несколько разных функций, в зависимости от значения переменной. Ну как? Или не заработает? А AxIThread - работает? Если я буду вызывать такие функции, на которыхх он взвисает таким образом: врубаю массив таймеров они крутятся и чекают переменную. Когда надо будет вызвать функцию, я делаю True этой переменной и таймерок срабатывает, исполняя функцию. Это уже будет исполнение не из треда а из таймера. Можно даже сделать переменную в Enum, это будет даже круче - одним таймером можно запускать несколько разных функций, в зависимости от значения переменной. Ну как? Или не заработает? Ну а ты попробуй, пусти функцию вроде большого цикла, которая напроч форму вешает - и проверь. Мы тут вообще то про Thread'ы говорили, а не про подобный изврат. Лучше уж юзай DoEvents. Если уж говорить о 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 |
Вопрос: Thread одновременный
Добавлено: 26.03.04 13:18
Автор вопроса: Диман | Web-сайт:
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа:
User Unknown
Вечный Юзер!
ICQ: uu@jabber.cz
Вопросов: 120
Ответов: 3302
Профиль | | #1
Добавлено: 26.03.04 13:23
Номер ответа: 2
Автор ответа:
Диман
ICQ: 224590251
Вопросов: 29
Ответов: 64
Web-сайт:
Профиль | | #2
Добавлено: 26.03.04 14:13
Номер ответа: 3
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #3
Добавлено: 26.03.04 14:30
Номер ответа: 4
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 26.03.04 17:17
Номер ответа: 5
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #5
Добавлено: 29.03.04 09:36
Номер ответа: 6
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #6
Добавлено: 30.03.04 01:29
Номер ответа: 7
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #7
Добавлено: 30.03.04 08:59
Номер ответа: 8
Автор ответа:
Диман
ICQ: 224590251
Вопросов: 29
Ответов: 64
Web-сайт:
Профиль | | #8
Добавлено: 31.03.04 21:52
Номер ответа: 9
Автор ответа:
Диман
ICQ: 224590251
Вопросов: 29
Ответов: 64
Web-сайт:
Профиль | | #9
Добавлено: 31.03.04 21:52
Номер ответа: 10
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #10
Добавлено: 01.04.04 09:00
Номер ответа: 11
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #11
Добавлено: 01.04.04 09:50