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();

}

}

主线程 子线程 调用 ThreadId BeginInvoke调用和Invoke调用的更多相关文章

  1. Handler主线程子线程之间的互相通信

    Handler主线程子线程之间的互相通信 package com.wyl.dansnote; import android.app.Activity; import android.os.Bundle ...

  2. Android ThreadUtil 线程公共类,判断是否在主线程/ 子线程执行 相关操作

    前言:通常,我们写的公共的模块给别人用,但是这个模块又必须在特定的线程中执行. 比如,一个加载网络图片的的方法,需要在子线程中执行. /** * 加载网络图片 */ private void load ...

  3. Android 主线程和线程之间相互发送消息

    通过分析Activity源码,我们知道每个Activity都有一个Looper,所以主线程在接收Message是不需要调用Looper.prepare()和Looper.loop(),但是线程是不带L ...

  4. C# 多线程详解 Part.02(UI 线程和子线程的互动、ProgressBar 的异步调用)

           我们先来看一段运行时会抛出 InvalidOperationException 异常的代码段: private void btnThreadA_Click(object sender, ...

  5. 关于sleep()和interrupt()及主线程和线程

    看代码 public class TestSleep { public static void main(String args[]) throws InterruptedException{ Thr ...

  6. 主线程——main线程

    定义一个普通的类: 引用这个类,执行main方法,main方法就是一个主线程: 线程:进程的执行单元,可以理解为栈内存中的所执行的方法(除了main方法之外都是线程中的run方法)地址开辟通往cpu的 ...

  7. C# 多线程学习系列四之ThreadPool取消、超时子线程操作以及ManualResetEvent和AutoResetEvent信号量的使用

    1.简介 虽然ThreadPool.Thread能开启子线程将一些任务交给子线程去承担,但是很多时候,因为某种原因,比如子线程发生异常.或者子线程的业务逻辑不符合我们的预期,那么这个时候我们必须关闭它 ...

  8. c# ThreadPool 判断子线程全部执行完毕的四种方法

    1.先来看看这个 多线程编程 多线程用于数据采集时,速度明显很快,下面是基本方法,把那个auto写成采集数据方法即可. using System; using System.Collections.G ...

  9. C# 子线程调用主线程窗体的解决方法

    摘自其他人博客,自己试过确实解决问题.(如在自己定义的线程里面给textbox赋值) 由于Windows窗体控件本质上不是线程安全的.因此如果有两个或多个线程适度操作某一控件的状态(set value ...

  10. Java主线程等待子线程、线程池

    public class TestThread extends Thread { public void run() { System.out.println(this.getName() + &qu ...

随机推荐

  1. Nginx基础02:配置文件nginx.conf(Part1)

    我们使用Nginx主要是通过其配置文件nginx.conf来实现的.按照一定的规则,编写特定的指令,可以帮助我们实现对Web服务的控制!所以,学习Nginx的用法,几乎就是学习nginx.conf! ...

  2. 基于SpringBoot实现操作GaussDB(DWS)的项目实战

    摘要:本文就使用springboot结合mybatis plus在项目中实现对GaussDB(DWS)的增删改查操作. 本文分享自华为云社区<基于SpringBoot实现操作GaussDB(DW ...

  3. ctfshow_web入门 反序列化(254~266)

    要是没接触过的师傅们,可以先看看这个 web 254 这个题没有考什么,get方式传入payload即可,这里xxxxxx,就是6gex而已 payload: ?username=xxxxxx& ...

  4. CF1367E Necklace Assembly

    题目传送门 思路 提供一种比现有的两篇题解都简单的方法. 我们枚举答案,发现最终的答案数组一定是由多个完全相同的块组成的,并且块长必定是 \(k\) 的因数. 然后我们考虑枚举答案 \(i\),那么此 ...

  5. 3D数字孪生场景编辑器介绍

    1.背景 数字孪生的建设流程涉及建模.美术.程序.仿真等多种人才的协同作业,人力要求高,实施成本高,建设周期长.如何让小型团队甚至一个人就可以完成数字孪生的开发,是数字孪生工具链要解决的重要问题.目前 ...

  6. 一些关于STL的笔记

    c++ std中set与unordered_set区别及map与unordered_map区别: map/set基于红黑树实现,红黑树具有自动排序的功能,因此map/set内部所有的数据,在任何时候, ...

  7. Spring Boot如何自定义监控指标

    1.创建项目 pom.xml引入相关依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=" ...

  8. jQuery使用与语法

    jQuery安装 1.从官网Download jQuery | jQuery下载安装: 2.CDN在线加载: statistic CDN:https://cdn.staticfile.org/jque ...

  9. 编程基础与python介绍

    思维导图 https://gitee.com/starry-tong/python-data/blob/pyimage/day02.png 1.计算机内部存储数据的原理 2.编程语言的发展史 3.py ...

  10. Windos下 java后台软件服务化(举例)-WinSW

    WinSW-软件服务化 1.1 举例:ApiWintool可执行jar ApiWintool.exe ApiWintool.jar ApiWintool.xml install.cmd uninsta ...