进程退出问题

wowosky 2009-03-27 04:05:02
当KILL的时候,任务栏的图标是没有了,但实际上进程仍然在工作。谁告诉我是什么原因?
代码:
Process a = new Process();
private void button1_Click(object sender, EventArgs e)
{
a.StartInfo.FileName = "\\windows\\test.exe";
a.Start();
}

private void button2_Click(object sender, EventArgs e)
{
a.Kill();//但实际并没关闭掉该进程。。。
}
...全文
87 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kongdelu2008 2009-03-27
  • 打赏
  • 举报
回复
我觉得,kill的作用应该和Abort差不多,也可以这么想
主线程调用子线程的Abort方法后,结束子线程会占用
大量CPU的时间,表面上看就像死机。为解决这个问题,可
以在主线程中调用子线程对象的Join方法,并在Join方法中
指定主线程等待子线程结束的等待时间。
kongdelu2008 2009-03-27
  • 打赏
  • 举报
回复
创建的线程默认是前台运行,你关闭了主线程,但是创建的线程还在执行;

解决方法:线程有一个 IsBackground属性,在启动线程时,加上这么一句,a.IsBackground=true;意思是把线程改为后台执行,这样,当主线程结束后,该线程也会结束,这样,任务管理器里就看不见它了;
哈哈潜伏哥 2009-03-27
  • 打赏
  • 举报
回复
wince下要先获取到程序的句柄,然后用
System.Diagnostics.Process.GetProcessById(handle.ToInt32()).Kill();
这样才能正常杀死进程,系统进程除外。
关于获取句柄的问题可以查看我我的空间中唯一一篇文章中关于获取所有运行的程序。

wince下要将所有API函数的dll文件明改为coredll.dll。
wowosky 2009-03-27
  • 打赏
  • 举报
回复
补充下,我用的是WINCE5.0系统。
Environment.Exit(0); //该方法没有。
WaitForExit(1000*10)//也没用

还是谢谢大家。。
真相重于对错 2009-03-27
  • 打赏
  • 举报
回复
注意
Kill 方法将异步执行。在调用 Kill 方法后,请调用 WaitForExit 方法等待进程退出,或者检查 HasExited 属性以确定进程是否已经退出。

jcyluck 2009-03-27
  • 打赏
  • 举报
回复
还有一个结束线程的方法
忘记了
去查查
windsea123 2009-03-27
  • 打赏
  • 举报
回复
Environment.Exit(0);

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧