zoukankan      html  css  js  c++  java
  • 子线程执行完后通知主线程

    Here is a simple demo by using delegate.

    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
  • 相关阅读:
    批量修改Linux文件夹下所有文件大小写
    如何使用malloc申请一个二位数组
    CenOS 配置C/C++语言
    C++类定义,.h文件与.cpp文件之间的关系以及条件编译
    Error while building/deploying project...When executing step "qmake"——Qt Creator快速排错
    Hello World!
    HDU1262:寻找素数对
    NOIP1998复赛:2的幂次方表示
    HDU1002 : A + B Problem II
    Open Judge2748:全排列
  • 原文地址:https://www.cnblogs.com/jizhiqiliao/p/9968321.html
Copyright © 2011-2022 走看看