37得票7回答
.NET Core中等价于Thread.Abort的方法是什么?

背景 我有一个Service抽象。每个服务都有自己的WorkItem,可以使用一些数据启动WorkItem。该服务限制了WorkItem的执行时间。假设单个WorkItem最长可以执行60秒。在此之后,Service应将其杀死。 这段代码是从.NET Framework迁移过来的。我创建了...

25得票4回答
Thread.Abort和Thread.Interrupt是在多线程编程中常用的两个方法。 Thread.Abort方法用于强制终止一个线程的执行。当调用Thread.Abort方法时,线程会立即停止执行,并抛出一个ThreadAbortException异常。这个异常可以被捕获,但是如果不处理,线程将会被终止。 Thread.Interrupt方法用于中断一个线程的执行。当调用Thread.Interrupt方法时,线程会收到一个中断信号,但是线程是否真正中断取决于线程本身的实现。一般情况下,线程会检查是否收到中断信号,并根据需要采取相应的操作。 需要注意的是,Thread.Abort方法是一种比较粗暴的终止线程的方式,可能会导致线程的状态不一致或资源泄漏等问题。而Thread.Interrupt方法则更加优雅,它给线程一个机会去优雅地中断自己的执行。 在使用这两个方法时,需要根据具体的需求和场景选择合适的方法。如果需要强制终止线程,并且可以处理线程终止时的异常,可以使用Thread.Abort方法。如果希望线程能够优雅地中断自己的执行,并且能够处理中断信号,可以使用Thread.Interrupt方法。

如果我需要取消线程上的某个操作,我应该在什么时候使用Thread.Abort和Thread.Interrupt。我已经阅读了相关文档,但不确定在两者之间的特定情况下应该使用哪个调用。 如果有其他方法,请告诉我它的优缺点。

19得票5回答
当调用ASP.NET System.Web.HttpResponse.End()时,当前线程会被中止?

当调用System.Web.HttpResponse.End()时,会触发System.Thread.Abort,我猜测这是一个异常?我有一些日志文件,在日志文件中列出了这个信息... A first chance exception of type 'System.Threading.Th...

18得票2回答
WCF服务中的线程中止异常

我有一个运行在IIS 6.0上的WCF服务(使用.NET Framework 3.5构建)。 代码流程如下: 客户端(另一个Web服务)调用WCF服务 WCF服务调用线程在后台处理并立即响应调用者。 后台线程完成所有处理后,回调该线程。此调用基本上是一个HTTPs请求,因为客户端是Web...

17得票5回答
Thread.Abort() 是如何工作的?

当方法传入无效输入或对象即将进入无效状态时,我们通常会抛出异常。让我们考虑以下示例: private void SomeMethod(string value) { if(value == null) throw new ArgumentNullException("...

16得票2回答
线程中止会导致僵尸事务和断开的SqlConnection。

我觉得这种行为不应该发生。以下是场景: 启动一个长时间运行的SQL事务。 运行SQL命令的线程被终止(不是由我们的代码终止的!) 当线程返回托管代码时,SqlConnection的状态为“已关闭”-但是事务仍在SQL服务器上打开。 SQLConnection可以重新打开,并且可以尝试在事务...

7得票1回答
停止读取 MSMQ 的服务

我是一名Java程序员,被要求对C#应用程序进行一些更改。我已经开始使用C#一周了,现在遇到了一个问题:查看文档没有帮助,谷歌搜索也找不到解决方案。 在这种情况下,我有一个Windows服务,它处理到达MSMQ的消息。当接收到消息时,当前正在监听的线程将其拾起并执行需要几秒钟的操作。 pu...