小编Shi*_*ano的帖子

如何在C#中杀死线程?

我有一个线程打开一个MyMessageAlert类型的形式.此表单是一个弹出窗口,在我调用它时打开.它有一个定时器,在30秒后调用CloseWindow()方法.

m_messagAlert = new MyMessageAlert(); 
ParameterizedThreadStart thStart = new ParameterizedThreadStart(m_messagAlert.setMessage);
Thread thread = new Thread(thStart);
thread.Start(strMessage); //at this point, the MyMessageAlert form is opened.
Run Code Online (Sandbox Code Playgroud)

我已经定义了一个类型线程列表:

public List<Thread> m_listThread;
Run Code Online (Sandbox Code Playgroud)

每次我创建一个线程,我都将它添加到我的列表中:

m_listThread.Add(thread);
Run Code Online (Sandbox Code Playgroud)

当我关闭应用程序时,我希望打开的MyMessageAlert类型的形式将立即关闭(不等待30秒).问题是我无法阻止它!

我尝试使用Abort()函数通过循环遍历列表来杀死它:

foreach (Thread thread in m_listThread)
 {
      if (thread.IsAlive)
           thread.Abort();
 }
Run Code Online (Sandbox Code Playgroud)

但它没有帮助.

c# multithreading kill

2
推荐指数
1
解决办法
5004
查看次数

标签 统计

c# ×1

kill ×1

multithreading ×1