怎么杀死一个线程?

时间:2021-12-23 18:07:49
RT
没有找到Abort方法,不知道怎么终止一个正在运行的现成。

环境是: .net compact framework 1.0 sp3

14 个解决方案

#1


没有Abort方法?不是吧?
没用过 .net compact framework 

#2


太狠了。

#3


不用杀,它自己执行完了会自杀。

除非你在线程的设计中使用了不太该使用的无限循环的逻辑。

#4


现在的情况是,该线程调用的方法有一定几率会导致无限等待下去。
因此要在主线程内杀掉该子线程。

#5


使用了一个布尔型标志和一个 while 循环来停止工作线程
应该有Thread.Abort();

#6


Process pss = Process.GetCurrentProcess();
                Process[] myProcesses = Process.GetProcessesByName(pss.ProcessName);

                if (myProcesses.Length >= 2)
                    pss.Kill();

#7


引用 4 楼 dangdang2471 的回复:
现在的情况是,该线程调用的方法有一定几率会导致无限等待下去。
因此要在主线程内杀掉该子线程。


几乎99%的时候,对于真正的产品研发,搞明白为什么会无限等待更重要。

往往,这是开发人员在编写异步操作程序时满脑子同步处理的逻辑控制方式,从而蹩脚地写出了“循环、阻塞”的垃圾代码所致。你清楚地举出无限等待的程序例子,就能看到这种问题。

#8


引用 6 楼 superman_ 的回复:
Process pss = Process.GetCurrentProcess();
                Process[] myProcesses = Process.GetProcessesByName(pss.ProcessName);

                if (myProcesses.Length >= 2)
                    pss.Kill();
这个正确

#9


 .net compact framework 1.0 没有这个方法:Process.GetCurrentProcess(); 

有没有API可以做到的?

#10


类似这个:
Process pss = Process.GetCurrentProcess(); 
Process[] myProcesses = Process.GetProcessesByName(pss.ProcessName); 
foreach(Process p in imyProcesses)
{
   p.kill();
}
 

#11


楼上的都说了,呵呵

#12


.net compact framework 1.0 没有这个方法:Process.GetCurrentProcess(); 

难道1.0 没法终止线程了吗?不可能吧

#13


楼上有些人线程和进程都没搞明白.还这个正确那个正确的 

#14


引用 10 楼 lt66_88 的回复:
类似这个:
Process pss = Process.GetCurrentProcess();
Process[] myProcesses = Process.GetProcessesByName(pss.ProcessName);
foreach(Process p in imyProcesses)
{
  p.kill();
}

这个对进程的Kill
线程自己结束生命,Abort不能保证他结束生命而且可能产生异常
7#说的正确

#1


没有Abort方法?不是吧?
没用过 .net compact framework 

#2


太狠了。

#3


不用杀,它自己执行完了会自杀。

除非你在线程的设计中使用了不太该使用的无限循环的逻辑。

#4


现在的情况是,该线程调用的方法有一定几率会导致无限等待下去。
因此要在主线程内杀掉该子线程。

#5


使用了一个布尔型标志和一个 while 循环来停止工作线程
应该有Thread.Abort();

#6


Process pss = Process.GetCurrentProcess();
                Process[] myProcesses = Process.GetProcessesByName(pss.ProcessName);

                if (myProcesses.Length >= 2)
                    pss.Kill();

#7


引用 4 楼 dangdang2471 的回复:
现在的情况是,该线程调用的方法有一定几率会导致无限等待下去。
因此要在主线程内杀掉该子线程。


几乎99%的时候,对于真正的产品研发,搞明白为什么会无限等待更重要。

往往,这是开发人员在编写异步操作程序时满脑子同步处理的逻辑控制方式,从而蹩脚地写出了“循环、阻塞”的垃圾代码所致。你清楚地举出无限等待的程序例子,就能看到这种问题。

#8


引用 6 楼 superman_ 的回复:
Process pss = Process.GetCurrentProcess();
                Process[] myProcesses = Process.GetProcessesByName(pss.ProcessName);

                if (myProcesses.Length >= 2)
                    pss.Kill();
这个正确

#9


 .net compact framework 1.0 没有这个方法:Process.GetCurrentProcess(); 

有没有API可以做到的?

#10


类似这个:
Process pss = Process.GetCurrentProcess(); 
Process[] myProcesses = Process.GetProcessesByName(pss.ProcessName); 
foreach(Process p in imyProcesses)
{
   p.kill();
}
 

#11


楼上的都说了,呵呵

#12


.net compact framework 1.0 没有这个方法:Process.GetCurrentProcess(); 

难道1.0 没法终止线程了吗?不可能吧

#13


楼上有些人线程和进程都没搞明白.还这个正确那个正确的 

#14


引用 10 楼 lt66_88 的回复:
类似这个:
Process pss = Process.GetCurrentProcess();
Process[] myProcesses = Process.GetProcessesByName(pss.ProcessName);
foreach(Process p in imyProcesses)
{
  p.kill();
}

这个对进程的Kill
线程自己结束生命,Abort不能保证他结束生命而且可能产生异常
7#说的正确