Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 | 2 |

 

  Вопрос: API долго думает - прога висит. А если не потоки? Добавлено: 05.09.06 22:54  

Автор вопроса:  Z_of_X | ICQ: 997550 
Выполняю Апи gethostbyaddr, но пока она выполнится пройдет секунда, а то и 2-3, прога в этот момент не отвечает.

Потоки - срывают башню у VB.

Выход есть?

Ответить

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

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



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

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 05.09.06 23:19
выход есть, использовать внешнюю длл библиотеку написанную на чем-нить другом.

Ответить

Номер ответа: 2
Автор ответа:
 Z_of_X



ICQ: 997550 

Вопросов: 5
Ответов: 18
 Профиль | | #2 Добавлено: 05.09.06 23:47
АЦТОЙййй

Ответить

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



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #3 Добавлено: 06.09.06 00:23
Юзать .NET

Ответить

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



Вопросов: 0
Ответов: 1876


 Профиль | | #4 Добавлено: 06.09.06 02:10
Юзать WSAAsyncGetHostByName.

Ответить

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



Вопросов: 0
Ответов: 1876


 Профиль | | #5 Добавлено: 06.09.06 02:11
Блин, WSAAsyncGetHostByAddr.

Ответить

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



ICQ: 997550 

Вопросов: 5
Ответов: 18
 Профиль | | #6 Добавлено: 06.09.06 03:10
Спасиба GSerg, но там еще у меня куча "тормозящие" АПИ. :(

Реализовываю "многопоточность" в нескольких процессах. Екзешник будет запускать другие екзешники, сразу несколько(как потоки), а эти в свою очередь после отработки будут возвращать результат в само приложение, которое ведет контроль за вспомогательными екзешниками(сколько и когда запускать).
Обход с тылу, точнее через жопу.

Ответить

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



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #7 Добавлено: 06.09.06 03:30
Уууууу...

Говорят же тебе - юзай .NET :)

Ответить

Номер ответа: 8
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #8
Добавлено: 06.09.06 07:44
Ну это, я бы сказал, не "с тылу", а совсем-совсем через жопу.

Ответить

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #9 Добавлено: 06.09.06 11:21
Сто раз писал. Используй ActiveX.EXE вместо Standard. StartMode - StandAlone, Threading Model - ThreadPerObject.
Далее при запуске в Sub_Main проверяешь - является ли это основным (первым) потоком. Если да - показываешь форму и т.п. Все остальные классы, экземпляры которых будут создаваться через CreateObject, будут создаваться в отдельных потоках. Основное отличие от CreateThread состоит в потоковой модели - вместо Free используются Apartment потоки. Как следствие - синхронизацию выполняет COM, и в твоей проге все будет работать шоколадно.

Ответить

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #10 Добавлено: 06.09.06 11:25
Да, чуть не забыл. Для запуска потока придется использовать неявный вызов через создание и удаление таймера. Дальше синхронизация через Event'ы.

Ответить

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



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

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #11
Добавлено: 06.09.06 12:54
2LOL, я к те как-нить еще обращусь с этим вопросом :))

Ответить

Номер ответа: 12
Автор ответа:
 HACKER


 

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

Вопросов: 236
Ответов: 8362
 Профиль | | #12 Добавлено: 06.09.06 13:09
Мона на PB DLL сделать, там прекрасно потоки работают...

Ответить

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #13 Добавлено: 06.09.06 13:27
Да всегда пожалуйста :))
2HACKER Это самое ответил sne в посте N1. На что Z_of_X ему ответил в посте N2 ;)

Ответить

Номер ответа: 14
Автор ответа:
 HACKER


 

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

Вопросов: 236
Ответов: 8362
 Профиль | | #14 Добавлено: 07.09.06 15:15
Ну мож человек кроме васика ничё незнает, поэтому на "на чем-нить другом", ответил Ацтой... А я вот с идеей продолжать юзать любимый васик :))

Ответить

Номер ответа: 15
Автор ответа:
 Z_of_X



ICQ: 997550 

Вопросов: 5
Ответов: 18
 Профиль | | #15 Добавлено: 07.09.06 23:25
Не, Аццтой я ответил, потому что в падлу :)
Прогу так, для себя в принципе пишу, так на скорую руку. замарачивацо не охота. Хочется побыстрее. Иначе бы на Си писал (думаю такой уровень я на Си осилю) :)

Ответить

Страница: 1 | 2 |

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



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