博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线程已被中止- “Thread was being aborted”
阅读量:4079 次
发布时间:2019-05-25

本文共 1823 字,大约阅读时间需要 6 分钟。

遇到过这个exception么? 这个exception是为什么而产生的呢?

下面的代码段来自MSDN, 很有说明性.

 

简单来说, 就是当进程还想继续执行的时候, 发现自己已经被调用过Abort方法了. 既然自己作为线程已经被中止, 就无法执行罗, 于是exception丢了出来.

 

下面的代码来自MSDN, 说明问题:

The following example demonstrates aborting a thread. The thread that receives the ThreadAbortException uses the  method to cancel the abort request and continue executing.

1: using System;
2: using System.Threading;
3: using System.Security.Permissions;
4: 
5: public class ThreadWork {
6:     public static void DoWork() {
7:         try {
8:             for(int i=0; i<100; i++) {
9:                 Console.WriteLine("Thread - working.");
10:                 Thread.Sleep(100);
11:             }
12:         }
13:         catch(ThreadAbortException e) {
14:             Console.WriteLine("Thread - caught ThreadAbortException - resetting.");
15:             Console.WriteLine("Exception message: {0}", e.Message);
16:             Thread.ResetAbort();
17:         }
18:         Console.WriteLine("Thread - still alive and working.");
19:         Thread.Sleep(1000);
20:         Console.WriteLine("Thread - finished working.");
21:     }
22: }
23: 
24: class ThreadAbortTest {
25:     public static void Main() {
26:         ThreadStart myThreadDelegate = new ThreadStart(ThreadWork.DoWork);
27:         Thread myThread = new Thread(myThreadDelegate);
28:         myThread.Start();
29:         Thread.Sleep(100);
30:         Console.WriteLine("Main - aborting my thread.");
31:         myThread.Abort();
32:         myThread.Join();
33:         Console.WriteLine("Main ending.");
34:     }
35: }

 

下面是输出结果:

Thread - working.

Main - aborting my thread.

Thread - caught ThreadAbortException - resetting.

Exception message: Thread was being aborted.

Thread - still alive and working.

Thread - finished working.

Main ending.

posted on 2013-05-07 14:13 阅读(...) 评论(...)

转载地址:http://jyvni.baihongyu.com/

你可能感兴趣的文章
链接点--数据结构和算法
查看>>
servlet中请求转发(forword)与重定向(sendredirect)的区别
查看>>
Spring4的IoC和DI的区别
查看>>
springcloud 的eureka服务注册demo
查看>>
eureka-client.properties文件配置
查看>>
MODULE_DEVICE_TABLE的理解
查看>>
platform_device与platform_driver
查看>>
platform_driver平台驱动注册和注销过程(下)
查看>>
.net强制退出主窗口的方法——Application.Exit()方法和Environment.Exit(0)方法
查看>>
c# 如何调用win8自带的屏幕键盘(非osk.exe)
查看>>
build/envsetup.sh 简介
查看>>
Android framework中修改或者添加资源无变化或编译不通过问题详解
查看>>
linux怎么切换到root里面?
查看>>
linux串口操作及设置详解
查看>>
安装alien,DEB与RPM互换
查看>>
编译Android4.0源码时常见错误及解决办法
查看>>
Android 源码编译make的错误处理
查看>>
linux环境下C语言中sleep的问题
查看>>
ubuntu 12.04 安装 GMA3650驱动
查看>>
新版本的linux如何生成xorg.conf
查看>>