服务器端的VB.NET计时器

时间:2011-04-22 18:27:48

标签: vb.net timer timeout synchronous

我有一种情况,我试图从客户端部分调用服务器端部件。

我需要同步这样做。但是,在我的服务器端代码中,我正在调用另一段代码,我想要最多返回一个值,比如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设置适当的返回值。

我已经谷歌这个问题了,结果很少。我能找到的最好的资源是Timers.Timer类的MSDN文档,但鉴于我的情况,即使这样也不是非常有用。

如果有人有任何链接,建议等,我将非常感激。

1 个答案:

答案 0 :(得分:1)

以超时(10秒)异步调用方法,无论方法调用是否完成,您都将返回GetWebResult,然后您可以从那里返回。 Sample here