C#WinForms线程管理器

时间:2019-04-20 21:58:56

标签: c# .net multithreading winforms

我想在我的C# WinForms应用程序中构建线程管理器。

这是我添加新线程的方式:

Thread thread = new Thread(delegate()
{
    Thread.Sleep(TimeSpan.FromSeconds(delay));

    //MY CODE

    RemoveCurrentThread();
});
threadArr.Add(thread);
thread.Start();

这是我删除线程的方法:

public void RemoveCurrentThread()
{
    if (threadArr.Contains(Thread.CurrentThread))
    {
        threadArr.Remove(Thread.CurrentThread);
    }
}

有时我想取消所有正在运行的线程,所以我使用:

public void CancelAllThreads()
{
    if (threadArr.Count == 0)
        return;

    foreach (Thread item in threadArr)
    {
        if (item.IsAlive)
            item.Abort();
    }

    threadArr.Clear();
}

此代码的问题是所有线程都已创建,然后开始等待延迟完成(我的应用程序中有很多线程,恐怕这会占用计算机的大量CPU) 。 几秒钟的延迟后,是否有任何内置代码来启动线程?

谢谢!

0 个答案:

没有答案