下面的代码是可以执行,大家都来说说为什么这个程序不会自动退出?
也就是说mian函数执行完毕后,为什么.net不会释放ThreadEx对象?

using System;
using System.Threading;

public class ThreadEx : IDisposable{    
    private Thread thread;
    private volatile bool bExit;
    public ThreadEx(){
        Console.WriteLine("ThreadEx output");
        bExit = false;
        thread = new Thread(OnThread);
        thread.Start();
    }

    ~ThreadEx(){
        Console.WriteLine("~ThreadEx output");
        bExit = true;
    }

    private void OnThread(){
        while(true){
            if(bExit){
                break;
            }
            Console.WriteLine("Thread output");
            Thread.Sleep(1000);
        }
        Console.WriteLine("Thread exit");
    }

    private void Close(){
        bExit = true;
    }

    public void Dispose() {
        // TODO:  添加 ThreadEx.Dispose 实现
        Console.WriteLine("~Dispose output");
        bExit = true;
    }

    static void Main(){
        ThreadEx threadEx = new ThreadEx();
    }
}

转载于:https://www.cnblogs.com/dannyr/archive/2007/09/28/909573.html

如何关闭子线程?征集析构函数与多线程的讨论!相关推荐

  1. java主线程控制子线程_CountDownLatch控制主线程等子线程执行完--Java多线程

    1.[代码]CountDownLatch控制主线程等子线程执行完--Java多线程 package com.sihuatech.common; import java.util.concurrent. ...

  2. node开启子线程_真Node多线程

    本文测试使用环境: 系统:macOS Mojave 10.14.2 CPU:4 核 2.3 GHz Node: 10.15.1 从 Node 线程说起 一般人理解 Node 是单线程的,所以 Node ...

  3. rust 手动关闭子线程_从零开始写 OS (9) —— 内核线程

    上一篇 小源:从零开始写 OS (8) -- 创建页表​zhuanlan.zhihu.com 本章代码对应 commit :de86ae6e1e8bdfe3388530f82b2081fe29e40b ...

  4. java子线程的创建_Java多线程基础(一):线程的创建

    多线程基础 并行与并发 并发是指一个处理器同时处理多个任务. 并行是指多个处理器或者是多核的处理器同时处理多个不同的任务. 打个比方:在并发的状态下,餐厅里只有一个厨师,尽管他做事利索,餐厅的客人等待 ...

  5. python threading-单线程 多线程 主线程 子线程 setDeamon join

    python threading-单线程 多线程 主线程 子线程 setDeamon join 单线程 多线程 主线程和子线程 setDaemon() join() 测试多线程下程序运行的时间 创建多 ...

  6. python多线程处理数据并获得子线程返回值

    python多线程处理数据并获得子线程返回值 前言 python3中的多线程 用方法包装函数 用类包装函数 获取子线程返回值 从类中返回值 其他方法 前言 python中采用多线程方式处理大数据量的数 ...

  7. c++主线程等待子线程结束_简单明了的 Python 多线程来了 | 原力计划

    作者 | 万里羊责编 | 王晓曼出品 | CSDN博客线程和进程计算机的核心是CPU,它承担了所有的计算任务,就像是一座工厂在时刻运行.如果工厂的资源有限,一次只能供一个车间来使用,也就是说当一个车间 ...

  8. python多线程的使用(导入线程模块、创建子线程任务、启动子线程任务、获取当前执行的线程号)

    1. 导入线程模块 #导入线程模块 import threading 2. 线程类Thread参数说明 Thread([group [, target [, name [, args [, kwarg ...

  9. [Java][Android] 多线程同步-主线程等待全部子线程完毕案例

    有时候我们会遇到这种问题:做一个大的事情能够被分解为做一系列相似的小的事情,而小的事情无非就是參数上有可能不同样而已! 此时,假设不使用线程,我们势必会浪费许多的时间来完毕整个大的事情.而使用线程的话 ...

最新文章

  1. c#中嵌入echarts_利用c#+jquery+echarts生成统计报表(附源代码)
  2. Scrapy定向爬虫教程(三)——爬取多个页面
  3. 性能测试初学_windows 计数器
  4. WPF窗体最小化到任务栏
  5. LeetCode 765. 情侣牵手(贪心)
  6. XML Tree Editor(树形视图XML编辑器) v0.1.0.35
  7. Pytorch基础(一) 初始tensor
  8. file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or service not known
  9. 使用jdbc连接数据库的步骤
  10. 整蛊小学妹,督促学习的html代码
  11. 查看Linux服务器内存情况
  12. 《熊出没·原始时代》首映 导演点赞宋祖儿配音
  13. win10安装配置elasticsearch7.6.0以及java代码初识
  14. python中复数类型的实部和虚部都是浮点数_Python合集之Python数据类型(一)
  15. 知识点滴 - 如何下载其他地区的iOS App
  16. 【W5500】STM32 H743驱动W5500进行UDP收发
  17. php ses 发送邮件,Amazon SES – 通过PHP sdk发送HTML邮件
  18. Android Activity的隐式调用(跨进程)★
  19. 你真的会用@Transactional吗?
  20. 【Linux】Samba服务器超详细安装、配置(附带各种问题解决方式)

热门文章

  1. 江西省普通高考2021艺术楼统考成绩查询,统考成绩查询
  2. 通过yum安装php7
  3. ES6 Promise - 让我们解开的面纱(遵循Promise/A+规范)
  4. 第14天:逻辑运算符、if、for语句
  5. c#通过反射移除所有事件
  6. android aidl和普通service
  7. Essential Chart for ASP.NET MVC商业图表控件相关介绍及下载
  8. 【转】动态模型及其求解介绍–番外篇
  9. [转载] 七龙珠第一部——第084话 天下第一高手
  10. no cortex-m sw device found_SW大模块水箱桂林厂家图纸