程序中有几个线程,我是先释放了线程所占用的资源,再杀死线程,最后调用这个的Application.Restart();为什么还是不行啊? Process[] allProcess = Process.GetProcesses(); foreach (Process p in allProcess) { for (int i = 0; i < p.Threads.Count; i++) { p.Threads[i].Dispose(); p.Kill(); }
Process[] allProcess = Process.GetProcesses(); foreach (Process p in allProcess) { for (int i = 0; i < p.Threads.Count; i++) { p.Threads[i].Dispose(); p.Kill(); }
Process[] allProcess = Process.GetProcesses();
foreach (Process p in allProcess)
{ for (int i = 0; i < p.Threads.Count; i++)
{
p.Threads[i].Dispose();
p.Kill();
}
}
Process p = new Process();
p.StartInfo.FileName = Application.ExecutablePath;
p.Start();
this.Close();
Process p = new Process();
p.StartInfo.FileName = Application.ExecutablePath;
p.Start();
Application.Exit();
如果是有调用到flash之类的,在构造函数的地方,作一下重载入。。
实在关闭不了,就手动杀掉本程序,如下:
proc = Process.GetProcessesByName("Program");//Program就是你的程序名称
Process p = new Process();
p.StartInfo.FileName = Application.ExecutablePath;
p.Start();
foreach (Process PR in proc)
{
PR.Kill();
}
p.StartInfo.FileName = Application.ExecutablePath;
p.Start();
foreach (Process PR in proc)
{
PR.Kill();
}
proc = Process.GetProcessesByName("Program");//Program不是程序名称,应该是进程名称啊
Process p = new Process();
p.StartInfo.FileName = Application.ExecutablePath;
p.Start();
foreach (Process PR in proc)
{
PR.Kill();
}
我之前的Application.Restart(); 还可以正常重启,只是里面的功能有的实现不了了。
{
string strAppFileName = Process.GetCurrentProcess().MainModule.FileName;
Process myNewProcess = new Process();
myNewProcess.StartInfo.FileName = strAppFileName; myNewProcess.StartInfo.WorkingDirectory = Application.ExecutablePath;
myNewProcess.Start();
Process[] allProcess = Process.GetProcesses();
foreach (Process p in allProcess)
{ for (int i = 0; i < p.Threads.Count; i++)
{
p.Threads[i].Dispose();
p.Kill();
}
}
base.Dispose(true);//释放由system.windows.forms.form占用的资源(内存除外)
}
线程运行代码中加条件,根据控制状态,决定是否正常结束.先通过改变全局变量,结束线程,再执行Application.Restart();