zoukankan      html  css  js  c++  java
  • 主线程 子线程 调用 ThreadId BeginInvoke调用和Invoke调用

    BeginInvoke是异步线程执行 

    class Program
        {
            static int TakeWhile() {
                int threadid = Thread.CurrentThread.ManagedThreadId;
                Console.WriteLine("子线程ID:"+threadid);//每次运行不一样 测试为6
                Thread.Sleep(2000);
                return 5;
           
            }

            static void Main(string[] args)
            {
                int threadmain = Thread.CurrentThread.ManagedThreadId;
                Console.WriteLine("主线程ID:" + threadmain);//每次运行不一样 测试为8
                Func<int> f1 = TakeWhile;
               IAsyncResult ar= f1.BeginInvoke(null,null);
                while(!ar.IsCompleted)
                {
                    Console.Write("...");
                   Thread.Sleep(1000);
                   
                }
                int result=f1.EndInvoke(ar);
                Console.WriteLine(result);//5 EndInvoke会返回异步回调函数的值
                Console.WriteLine("结束");
                Console.Read();

            }

    invoke 调用是同步执行 同一个线程执行

     class Program
        {
          public  static voidTakeWhile() {
                int threadid = Thread.CurrentThread.ManagedThreadId;
                Console.WriteLine("子线程ID:"+threadid);//每次运行不一样 测试为1
                Thread.Sleep(2000);
            }

            static void Main(string[] args)
            {
                int threadmain = Thread.CurrentThread.ManagedThreadId;
               // Console.WriteLine(Thread.CurrentThread.GetHashCode());当前framework中线程这个值与ManagedThreadId一致
                Console.WriteLine("主线程ID:" + threadmain);//每次运行不一样 测试为1           
                typeof(ConsoleApplication2.Program).GetMethod("TakeWhile").Invoke(null, null);
                Console.WriteLine("结束");
                Console.Read();

            }


        }

  • 相关阅读:
    2-5 Flutter开发环境与Android开发环境设置详解(Windows)
    2-3 Flutter开发环境与iOS开发环境设置(Mac)
    2-1 本章作业&2-2 开发系统与工具选择
    ASP.NET Core会议管理平台实战_4、参数校验、操作结果封装,注册参数配置
    ASP.NET Core会议管理平台实战_3、认证、授权表迁移
    29.镜像容器与仓库
    27.集成EFCore配置Client和API
    26.OpenIdConnect获取用户信息的两种方式
    25.ProfileService实现(调试)
    24.集成ASP.NETCore Identity
  • 原文地址:https://www.cnblogs.com/bawang/p/8808279.html
Copyright © 2011-2022 走看看