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