C#多线程之线程中止Abort()方法
一、简介
Abort()方法用来终止线程,调用此方法强制停止正在执行的线程,它会抛出一个ThreadAbortException异常从而导致目标线程的终止。
二、代码
class Program { static void Main(string[] args) { Thread thread = new Thread(ThreadMethod); //执行的必须是无返回值的方法 thread.Name = "子線程A"; thread.Start(); Console.ReadKey(); } public static void ThreadMethod(object parameter) { Console.WriteLine("我是:{0},我要終止了!", Thread.CurrentThread.Name); //开始终止线程 Thread.CurrentThread.Abort(); //下面的代码不会执行 for (int i = 0; i < 10; i++) { Console.WriteLine("我是:{0},我循環{1}次", Thread.CurrentThread.Name, i); } } }
三、运行结果:
到此这篇关于C#多线程之线程中止Abort()方法的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
C#多线程之取消架构介绍
.NET 4.5 中包含取消架构,允许以标准方式取消长时间运行的任务.每个阻塞调用都应支持这种机制.但目前,并不是所有阻塞调用都实现了这个新技术.已经实现了这种机制的技术有任务(https://www.jb51.net/article/244285.htm),并发集合类(https://www.jb51.net/article/244141.htm),并行LINQ(https://www.jb51.net/article/244216.htm)和几种同步机制.取消架构基于协作行为,它不是强制的.
-
C#多线程死锁介绍与案例代码
一.死锁简介 在多道程序设计环境下,多个进程可能竞争一定数量的资源,.一个进程申请资源,如果资源不可用,那么进程进入等待状态.如果所申请的资源被其他等待进程占有,那么该等待的进程有可能无法改变状态,这种情况下称之为死锁. 二.死锁条件 死锁的四个条件: 1.非抢占:资源不能被抢占2.互斥:至少有一个资源必须处在非共享模式,即一次只能有一个进程使用,如果另一进程申请该资源,那么申请进程必须延迟直到该资源释放为止.3.占有并等待:一个进程必须占有至少一个资源,并等待另一个资源,而该资源为其他进程所占
-
浅谈C#多线程下的调优
目录 一.原子操作 1.基于Lock实现 2.基于CAS实现 3.自旋锁SpinLock 4.读写锁ReaderWriterLockSlim 二.线程安全 1.线程安全集合 2.线程安全字典 三.线程池 1.通过QueueUserWorkItem启动工作者线程 2.线程池等待(信号量) 3.Task 4.线程池调度原理 四.并行 五.异步IO 1.异步IO于同步IO比较 2.异步读写文件 一.原子操作 先看一段问题代码 /// <summary> /// 获取自增 /// </summa
-
C#实现多线程编程的简单案例
目录 一.使用线程的理由 二.基本知识 三.线程的使用 四.线程池 五.Task类 六.委托异步执行 一.使用线程的理由 1.可以使用线程将代码同其他代码隔离,提高应用程序的可靠性.2.可以使用线程来简化编码.3.可以使用线程来实现并发执行. 二.基本知识 1.进程与线程:进程作为操作系统执行程序的基本单位,拥有应用程序的资源,进程包含线程,进程的资源被线程共享,线程不拥有资源.2.前台线程和后台线程:通过Thread类新建线程默认为前台线程.当所有前台线程关闭时,所有的后台线程也会被直接终止,
-
C#多线程实现异步接口
异步接口的声明 我们已经了解到,如果一个方法是异步的,那么这个方法的返回值类型是Task<T>,那么接口中该如何规定异步方法呢? 一样的,如果接口中的方法是异步的,那么规定方法的返回值类型是Task<T>即可,看下面的代码: interface ITest { /// <summary> /// 方法的返回类型是Task<T> /// </summary> /// <returns></returns> Task<s
-
c#多线程之线程基础
目录 一.简介 二.创建线程 三.暂停线程 四.线程等待 五.终止线程 六.检测线程状态 七.线程优先级 八.前台线程和后台线程 九.向线程传递参数 十.使用C# Lock 关键字 十一.使用Monitor类锁定资源 十二.处理异常 一.简介 1.为了防止一个应用程序控制CPU而导致其他应用程序和操作系统本身永远被挂起这一可能情况,操作系统不得不使用某种方式将物理计算分割为一些虚拟的进程,并给予每个执行程序一定量的计算能力.此外操作系统必须始终能够优先访问CPU,并能调整不同程序访问CPU的优先
-
C#多线程之任务的用法详解
目录 一.启动任务 1.使用线程池的任务 2.同步任务 3.使用单独线程的任务 二.任务的结果————Future 三.连续的任务 四.任务的层次结构 Parallel类(https://www.jb51.net/article/244267.htm)的并行任务需要结束后才能运行后面的代码,如果想不等结束后在开始动作,可以使用Task类更好地控制并行动作.任务表示应完成的某个工作单元.这个工作单元可以在单独的线程中运行,也可以以同步方式启动一个任务,这需要等待主调线程.使用任务不仅可以获得一个抽
-
C#使用读写锁解决多线程并发问题
一.简介 在开发程序的过程中,难免少不了写入错误日志这个关键功能.实现这个功能,可以选择使用第三方日志插件,也可以选择使用数据库,还可以自己写个简单的方法把错误信息记录到日志文件.现在我们来讲下最后一种方法: 在选择最后一种方法实现的时候,若对文件操作与线程同步不熟悉,问题就有可能出现了,因为同一个文件并不允许多个线程同时写入,否则会提示“文件正在由另一进程使用,因此该进程无法访问此文件”.这是文件的并发写入问题,就需要用到线程同步.而微软也给线程同步提供了一些相关的类可以达到这样的目的,本文使
-
C#多线程之Parallel类的用法
Parallel类是对线程的一个抽象.该类位于System.Threading.Tasks名称空间中,提供了数据和任务并行性. Paraller类定义了数据并行地For和ForEach的静态方法,以及任务并行的Invoke的静态方法.Parallel.For()和Parallel.ForEach()方法在每次迭代中调用相同的代码,Paraller.Invoke()允许调用不同的方法. 1.Parallel.For Parallel.For()方法类似C#语法的for循环语句,多次执行一个任务.但
-
C#多线程之线程中止Abort()方法
一.简介 Abort()方法用来终止线程,调用此方法强制停止正在执行的线程,它会抛出一个ThreadAbortException异常从而导致目标线程的终止. 二.代码 class Program { static void Main(string[] args) { Thread thread = new Thread(ThreadMethod); //执行的必须是无返回值的方法 thread.Name = "子線程A"; thread.Start(); Console.ReadKey
-
Java多线程及线程安全实现方法解析
一.java多线程实现的两种方式 1.继承Thread /** * * @version: 1.1.0 * @Description: 多线程 * @author: wsq * @date: 2020年6月8日下午2:25:33 */ public class MyThread extends Thread{ @Override public void run() { System.out.println("This is the first thread!"); } public s
-
python 多线程中子线程和主线程相互通信方法
需求:主线程开启了多个线程去干活,每个线程需要完成的时间不同,但是在干完活以后都要通知给主线程 下面上代码: #!/usr/bin/python # coding:utf8 ''' 多线程和queue配合使用,实现子线程和主线程相互通信的例子 ''' import threading __author__ = "Kenny.Li" import Queue import time import random q = Queue.Queue() class MyThread(thread
-
Java多线程之如何确定线程数的方法
关于多线程的线程数的确定,最近研读过几篇paper,在此做一下笔记,方便使用时翻看. 1.<Java 虚拟机并发编程>中介绍 就是说:线程数 = CPU的核心数 * (1 - 阻塞系数) 另一篇:<Java Concurrency in Practice>即<java并发编程实践>,给出的线程池大小的估算公式: Nthreads=Ncpu*Ucpu*(1+w/c),其中 Ncpu=CPU核心数,Ucpu=cpu使用率,0~1:W/C=等待时间与计算时间的比率 仔细推敲两
-
java中多线程与线程池的基本使用方法
目录 前言 继承Thread 实现Runnale接口 Callable 线程池 常见的4种线程池. 总结 前言 在java中,如果每个请求到达就创建一个新线程,开销是相当大的.在实际使用中,服务器在创建和销毁线程上花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多.除了创建和销毁线程的开销之外,活动的线程也需要消耗系统资源.如果在一个jvm里创建太多的线程,可能会使系统由于过度消耗内存或"切换过度"而导致系统资源不足.为了防止资源不足,服务器应用程
-
C#多线程之线程控制详解
本文为大家分享了C#多线程之线程控制,供大家参考,具体内容如下 方案一: 调用线程控制方法.启动:Thread.Start();停止:Thread.Abort();暂停:Thread.Suspend();继续:Thread.Resume(); private void btn_Start_Click(object sender, EventArgs e) { mThread.Start(); // 开始 } private void btn_Stop_Click(object sender, E
-
C#多线程之线程锁
目录 一.Mutex类 二.Mutex的用途 三.Semaphore信号量 1.简介 2.初始化 3.WaitOne()和Release() 四.Monitor类 典型的生产者与消费者实例 五.Lock 六.InterLocked(相当于lock,对整数) 1.Interlocked类主要方法 2.实例 一.Mutex类 “mutex”是术语“互相排斥(mutually exclusive)”的简写形式,也就是互斥量.互斥量跟临界区中提到的Monitor很相似,只有拥有互斥对象的线程才具有访问资
-
Java多线程之线程通信生产者消费者模式及等待唤醒机制代码详解
前言 前面的例子都是多个线程在做相同的操作,比如4个线程都对共享数据做tickets–操作.大多情况下,程序中需要不同的线程做不同的事,比如一个线程对共享变量做tickets++操作,另一个线程对共享变量做tickets–操作,这就是大名鼎鼎的生产者和消费者模式. 正文 一,生产者-消费者模式也是多线程 生产者和消费者模式也是多线程的范例.所以其编程需要遵循多线程的规矩. 首先,既然是多线程,就必然要使用同步.上回说到,synchronized关键字在修饰函数的时候,使用的是"this"
-
java 多线程的几种实现方法总结
java 多线程的几种实现方法总结 1.多线程有几种实现方法?同步有几种实现方法? 多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify wait():使一个线程处于等待状态,并且释放所持有的对象的lock. sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常. notify():唤醒一个处于等待状态的线程,注意的是在调用此
随机推荐
- Vue声明式渲染详解
- 浅谈异常结构图、编译期异常和运行期异常的区别
- 个人对于异步和多线程的关系的理解分享
- jdk自带定时器使用方法详解
- Python生成随机数组的方法小结
- php购物车实现代码
- Android提高之MediaPlayer音视频播放
- Python中Continue语句的用法的举例详解
- Python编程入门之Hello World的三种实现方式
- Python实现在Linux系统下更改当前进程运行用户
- Vue.js第二天学习笔记(vue-router)
- JavaScript实现弹出DIV层同时页面背景渐变成半透明效果
- 深入理解Vue生命周期、手动挂载及挂载子组件
- js 自定义的联动下拉框
- Android Studio生成函数注释的实现方法
- Android 实现闪屏页和右上角的倒计时跳转实例代码
- PHP删除特定数组内容并且重建数组索引的方法.
- Android自定义TextView实现文字图片居中显示的方法
- 详解PHP后期静态绑定分析与应用
- C#代码实现扑克牌排序的几种方式