相关疑难解决方法(0)

使用Thread.Abort()有什么问题

所以我知道你不应该使用

Thread.Abort()
Run Code Online (Sandbox Code Playgroud)

但我从未得到过很好的解释.是否存在性能损失或隐藏的问题?

我知道你不能忽略/吞下ThreadAbortException(这是有道理的)

.net c# multithreading

62
推荐指数
5
解决办法
3万
查看次数

杀死应用程序打开的所有线程

我有一些非常大的应用程序混合使用c#和j#.

有时当我关闭它时,有一些线程没有关闭,它们挂在任务管理器中,不可能从那里杀死它们.

我找到所有这些线程并将它们添加到结束事件中确实存在问题.

是否有某种方式猛烈杀死在关闭事件中由应用程序打开的所有线程?...

谢谢.

是否有一些工具可以告诉我在关闭应用程序时打开了哪些线程?

.net c# j#

34
推荐指数
3
解决办法
7万
查看次数

关闭多线程应用程序

我正在尝试为我的C#应用​​程序编写一个ThreadManager.我创建了几个线程:
我的文本编写器的一个线程.
一个监视某些统计信息的线程.
多线程执行大量计算(每个核心最多4个线程,我在2x四核服务器上运行我的应用程序).

我的应用程序通常一次最多运行24小时,因此所有线程都在开始时创建,并且它们会在应用程序运行的整个过程中持续存在.

我希望有一个单独的地方,我"注册"我的所有踏板,当应用程序关闭时,我只需调用一个方法,它将通过所有已注册的线程并关闭它们.

为此我设计了以下课程:

public class ThreadManager
{
    private static Object _sync = new Object();
    private static ThreadManager _instance = null;
    private static List<Thread> _threads;
    private ThreadManager()
    {
        _threads = new List<Thread>();
    }

    public static ThreadManager Instance
    {
        get
        {
            lock (_sync)
            {
                if (_instance == null)
                {
                    _instance = new ThreadManager();
                }
            }
            return _instance;
        }
    }

    public void AddThread(Thread t)
    {
        lock (_sync)
        {
            _threads.Add(t);
        }
    }

    public void Shutdown()
    {
        lock (_sync)
        {
            foreach …
Run Code Online (Sandbox Code Playgroud)

c# multithreading

8
推荐指数
2
解决办法
5757
查看次数

标签 统计

c# ×3

.net ×2

multithreading ×2

j# ×1