У меня есть ситуация, когда я пытаюсь от части клиента выполнить вызов части сервера.
Мне нужно сделать это синхронно. Однако в моем коде на стороне сервера я вызываю другой фрагмент кода, который я хочу иметь максимум, скажем, 10 секунд, чтобы вернуть значение.
Если у меня нет ответа в течение 10 секунд, я хочу заставить свой собственный серверный компонент установить мой результат равным 0 и вернуться к клиенту.
Вот что у меня есть в моем серверном коде:
Public Function GetWebResult(ByVal inputParameter As Object) As WebReturnObject Implements IWebInterface.GetWebResult
Dim result As New WebReturnObject
Dim webItem As WebItem = Nothing
_timer = New Timers.Timer
AddHandler _timer.Elapsed, AddressOf HandleTimerElapsed
_timer.Interval = 10000 '10 Seconds'
_timer.AutoReset = False
_timer.Start()
webItem = GetAWebItem(inputParameter)
_timer.Stop()
result = webItem
Return result
End Function
Private Sub HandleTimerElapsed(ByVal sender as Object, ByVal e As System.Timers.ElapsedEventArgs) Handles _timer.Elapsed
'result.HasTimedOut = True'
'result.Value = 0'
'How do I then get back into GetWebResult?'
End Sub
Я понимаю, что этот код не работает. Проблема в том, что я не уверен, как мне вернуться к GetWebResult
, чтобы установить соответствующие возвращаемые значения, прежде чем они будут отправлены обратно клиенту.
У меня уже была проблема с Google, и результаты были скудными. Лучшие ресурсы, которые мне удалось найти, - это документация MSDN для класса Timers.Timer , но даже это не очень полезно, учитывая мою ситуацию.
Если у кого-то есть ссылки, предложения и т. Д., Я был бы очень признателен.