Mega Code Archive

 
Categories / VB.Net Tutorial / Thread
 

Polling for Asynchronous Call Completion

Imports System     Imports System.Threading     Imports System.Runtime.InteropServices      Public Class AsyncDemo          Public Function TestMethod(ByVal callDuration As Integer,<Out> ByRef threadId As Integer) As String             Console.WriteLine("Test method begins.")             Thread.Sleep(callDuration)             threadId = Thread.CurrentThread.ManagedThreadId()             return String.Format("My call time was {0}.", callDuration.ToString())         End Function     End Class     Public Delegate Function AsyncMethodCaller(ByVal callDuration As Integer,<Out> ByRef threadId As Integer) As String     Public Class AsyncMain          Shared Sub Main()              Dim threadId As Integer             Dim ad As New AsyncDemo()             Dim caller As New AsyncMethodCaller(AddressOf ad.TestMethod)             Dim result As IAsyncResult = caller.BeginInvoke(3000,threadId, Nothing, Nothing)             While result.IsCompleted = False                 Thread.Sleep(50)                 Console.WriteLine(".")             End While             Dim returnValue As String = caller.EndInvoke(threadId, result)             Console.WriteLine(threadId)             Console.WriteLine(returnValue)         End Sub     End Class