【发布时间】:2019-08-02 20:03:53
【问题描述】:
我正在使用 asp.net 核心编写一个应用程序,我需要在其中创建一个新线程,因为我有一个始终在运行的循环。在某些时候,我需要研磨这个线程。在 asp.net 中,Thread.abort 是解决方案,但它在 asp.net 核心中被删除。有什么替代解决方案?
【问题讨论】:
-
一个始终在运行的循环 在网络环境中似乎是一个非常糟糕的主意。我想你是在你的网络服务器上产生内存泄漏。 什么是替代解决方案根本不这样做......永远?!无论哪种方式,它都是nice to see some code。您还应该使用
Task而不是Thread类 -
致电
Thread.Abort()几乎不是解决方案。它可能会破坏剩余线程的运行时。仅当您试图完全退出应用程序时才应该调用它。 -
循环是监控传感器,这就是为什么我不能逃避它
-
“一个始终运行的线程”的想法与“在某些时候,我需要杀死这个线程”是不一致的。
-
线程,根据定义,在任何语言中,通过作用于共享变量进行通信。如果你强行杀死一个线程,你就有可能让共享变量处于不一致的状态。在允许其他线程继续运行的同时强行杀死一个线程总是不好的做法。线程应该合作。如果线程 A 需要线程 B 死亡,那么线程 A 应该发送消息要求线程 B 死亡,并且线程 B 应该被设计为通过 干净 关闭自身来处理请求下来。
标签: c# multithreading asp.net-core .net-core