|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
30.01.2017, 11:40 | #1 | |
Пользователь
Регистрация: 13.09.2016
Сообщений: 16
|
Асинхронный пинг
IcmpSendEcho2 позволяет делать асинхронные запросы как Event (второй параметр функции) или как через Callback функцию (третий параметр).
Сделал всё как по статье из MSDN, через PIO_APC_ROUTINE, но этот самый ROUTINE никак не хотел вызываться. Убил полдня, чтобы в поисках ошибки, но, как оказалось, ошибки нет. Asynchronous Procedure Calls: Цитата:
Код:
При этом полностью теряется вся асинхронность. SleepEx ставит приложение на паузу до тех пор, пока не будет получен ответ от IcmpSendEcho2. Если создавать отдельный тред, под каждый пинг, то получится очень много накладных расходов (пинговаться могут сотни хостов параллельно). Может я что-то упустил или делаю не так? Или всё-таки единственным методом асинхронности будет использование Event-ов? |
|
30.01.2017, 11:54 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,713
|
Берете WaitForSingleObjectEx с маленьким таймаутом (или 0 ) и в цикле проверяете. Виснуть не будет.
|
30.01.2017, 12:45 | #3 | |
Пользователь
Регистрация: 13.09.2016
Сообщений: 16
|
Поменял SleepEx на WaitForSingleObjectEx - ситуация с зависонами не поменялась, но Callback функция вызываться перестала. За наводку спасибо, меня осенило и я понял в чём проблема:
Цитата:
|
|
30.01.2017, 13:03 | #4 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,713
|
Таймаут какой ставили? Параметры вызовы в студию!
Цитата:
|
|
30.01.2017, 13:29 | #5 |
Пользователь
Регистрация: 13.09.2016
Сообщений: 16
|
Вызывал так:
Код:
|
30.01.2017, 16:17 | #6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Асинхронный пинг множества хостов | kpoko | C# (си шарп) | 7 | 20.03.2013 17:01 |
Асинхронный поток | coNsept | C# (си шарп) | 1 | 28.09.2012 10:22 |
Асинхронный вызов в C# | q_proger | C# (си шарп) | 7 | 16.12.2010 23:27 |
Асинхронный просмотр | Claster | Помощь студентам | 6 | 11.02.2010 15:38 |
Асинхронный сокет | raspberry | C/C++ Сетевое программирование | 8 | 07.07.2009 16:51 |