2011-01-13 7 views
2

Использование проекта NDde (http://ndde.codeplex.com/) из C# для чтения данных с сервера DDE. Часто метод DdeClient Request() возвращает «#No Data». Повторный вызов того же метода и данные будут возвращены. Почему это происходит?DDE: C# NDde DdeClient.Request часто возвращает «Нет данных»?

Как это решить? Примечание. Я попытался поместить вызов Request() в цикл таким образом, чтобы, если данные не возвращены, он будет повторять попытку за определенное количество раз. Однако, зацикливая даже в 10 раз данные все равно иногда возвращаются «Нет данных». Однако, если я установил точку останова, данные почти всегда будут возвращены во второй раз. Я предполагаю, что это связано с тем, что между запросами существует более продолжительное время.

ответ

3

Почему бы не использовать функциональные возможности Advise вместо Request. Для этого подписаться на мероприятие Advise?

client.Advise += OnAdvise; 

, где OnAdvise - метод обработчика событий. Затем запустите консистентную петлю.

client.StartAdvise("myitem", 1, true, 60000); 

Теперь, когда данные становятся доступными, событие Консультировать будет стрелять, и вы получите ваши данные от EventArgs.

0

Если бы я должен был догадаться, я бы сказал, что на сервере DDE есть проблема с синхронизацией. Пробовали ли вы временное расстояние между операциями Request?