2011-04-22 37 views
1

我有一種情況,我試圖從客戶端的一塊,調用服務器端的一塊。服務器端VB.NET定時器

我需要同步做到這一點。不過,在我的服務器端代碼中,我正在調用另一段代碼,我希望它有最多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'd這個問題,並且結果很少。我所能找到的最好的資源是類別爲Timers.Timer的MSDN文檔,但即使如此,鑑於我的情況,這並不是非常有用。

如果任何人有任何鏈接,建議等,我會非常感激。

回答

1

以超時(10秒)異步調用方法,無論方法調用完成如何,您都將回到GetWebResult,然後您可以從那裏返回。 Sample here