子線程執行完後通知主線程

Here is a simple demo by using delegate.ide

class Program { public delegate void Entrust(); static void Main(string[] args) { Entrust callback = new Entrust(Timer1Complete); Thread th = new Thread(ProcessTimer1); th.IsBackground = true; th.Start(callback); // time-consuming operations in main thread
        for (int i = 1;i< 10;i++) { Console.WriteLine("main {0}", i); Thread.Sleep(500); } // time-consuming operations in main thread
 Console.ReadKey(); } private static void ProcessTimer1(object obj) { // time-consuming operations in sub thread
        for (int i = 1; i <= 5; i++) { Console.WriteLine("sub {0}", i); Thread.Sleep(500); } // time-consuming operations in sub thread
        Entrust callback = obj as Entrust; callback(); } private static void Timer1Complete() { Console.WriteLine("cause the Timer1Complete method to execute"); } }
Class SurroundingClass
    Public Delegate Sub Entrust()

    Private Shared Sub Main(ByVal args As String())
        Dim callback As Entrust = New Entrust(AddressOf Timer1Complete)
        Dim th As Thread = New Thread(AddressOf ProcessTimer1)
        th.IsBackground = True
        th.Start(callback)

        For i As Integer = 1 To 10
            Console.WriteLine("main {0}", i)
            Thread.Sleep(500)
        Next

        Console.ReadKey()
    End Sub

    Private Shared Sub ProcessTimer1(ByVal obj As Object)
        For i As Integer = 1 To 5
            Console.WriteLine("sub {0}", i)
            Thread.Sleep(500)
        Next

        Dim callback As Entrust = TryCast(obj, Entrust)
        callback()
    End Sub

    Private Shared Sub Timer1Complete()
        Console.WriteLine("cause the Timer1Complete method to execute")
    End Sub
End Class

In VB.NET
View Code
相關文章
相關標籤/搜索