相关疑难解决方法(0)

如何在C#中立即杀死一个线程?

我正在使用该thread.Abort方法来杀死线程,但它不起作用.有没有其他方法来终止线程?

private void button1_Click(object sender, EventArgs e)
{
    if (Receiver.IsAlive == true)
    {
        MessageBox.Show("Alive");
        Receiver.Abort();
    }
    else
    {
        MessageBox.Show("Dead");
        Receiver.Start();
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用它,但每次我获得Alive状态,Receiver都是我的全局线程.

c# multithreading winforms

47
推荐指数
5
解决办法
18万
查看次数

如何有效地杀死C#中的线程?

我不是一个 ,诚实.我已经阅读了有关线程查杀的所有建议,但请考虑代码.它执行以下操作:

  1. 它启动一个线程(通过StartThread方法)
  2. 它调用数据库查找ServiceBroker队列中的任何内容.注意WAITFOR命令 - 这意味着它将一直坐在那里直到队列中有东西.这一切都在MonitorQueue方法中.
  3. 杀死线程.我试过.Interrupt- 似乎什么也没做.然后我尝试了.Abort,永远不应该使用,但即使这样做也没有.

    Thread thxMonitor = new Thread(MonitorQueue);
    void StartThread() {
        thxMonitor.Start();
    }
    
    void MonitorQueue(object obj) {
        var conn = new SqlConnection(connString);
        conn.Open();
        var cmd = conn.CreateCommand();
        cmd.CommandTimeout = 0; // forever and ever
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "WAITFOR (RECEIVE CONVERT(int, message_body) AS Message FROM SBQ)";
    
        var dataTable = new DataTable();
        var da = new SqlDataAdapter(command); …
    Run Code Online (Sandbox Code Playgroud)

.net c# multithreading .net-3.5

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

停止在IronPython中运行的所有线程

如果我在C#线程中启动IronPyThon引擎,python脚本将启动许多线程.但是,当我杀死C#线程时,python脚本中的所有线程仍在运行.如何杀死Python脚本中的所有线程?

c# ironpython

4
推荐指数
1
解决办法
816
查看次数

如何在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# ×4

multithreading ×3

.net ×1

.net-3.5 ×1

ironpython ×1

kill ×1

winforms ×1