2013-10-27 4 views
2

У меня есть приложение Windows vb .NET. В которой я вызываю внешнюю функцию и получаю ответ.Как контролировать время ответа в vb .net?

В большинстве случаев это работает. Но на некоторых клиентских машинах ответ не приходит должным образом. Это занимает больше времени. Мой вопрос в том, как установить тайм-аут, например. 30 секунд, так что я обработаю ответ, который не подходит, и должен продолжить следующие шаги.

Часть моего кода показана ниже.

' my response class 
Dim MyResponse as new clsResponse 

' calling outside function which returns response. 
MyResponse = Obj.SendRequest(MyRequest) 

'' Some code Here 

ответ

2

Я думаю, вы могли бы использовать Task.Wait:

What's the difference between Task.Start/Wait and Async/Await?

и передать в параметре ожидания.

http://msdn.microsoft.com/en-us/library/dd235606.aspx

возвращает истину, если задача завершена в нужное время.

см Также в этом: задача по-прежнему будет работать в фоновом режиме, хотя ваша функция будет продолжать

Does Task.Wait(int) stop the task if the timeout elapses without the task finishing?

Task t = new Task(() => 
     { 
      MyResponse = Obj.SendRequest(MyRequest); 
     }); 
t.Start(); 
bool finished = t.Wait(3000); 

Я думаю, что в VB .NET, который будет:

Dim t as Task = new Task(Sub() MyResponse = Obj.SendRequest(MyRequest)) 
t.Start() 
Dim finished as Boolean = t.Wait(3000) 
+0

Поскольку OP не предоставил фреймворк, следует отметить, что этот метод будет работать только в .NET 4.0 или выше. Для .NET3.5 или ниже это должно быть реализовано напрямую с потоками. –

+0

фактически im используя .NET 3.5. Задача недоступна? Если это невозможно, пожалуйста, покажите мне внедряющую нить? – NormalSoft

+0

задача недоступна в .net framework 3.5 – NormalSoft

Смежные вопросы