主要问题:
第一次运行(按F5或者ctl+F5)程序时正常,对代码或者窗体的某个属性值进行更改,然后再运行(按F5或者ctl+F5),程序就会报错:错误 1 无法将文件“obj\Debug\VechileManagement.exe”复制到“bin\Debug\VechileManagement.exe”。文件“bin\Debug\VechileManagement.exe”正由另一进程使用,因此该进程无法访问此文件。 VechileManagement然后在任务管理器当中会看到相应的进程正在运行,具体表现为程序退出时,进程无法结束。
退出方式:
添加Exit菜单,点击之后退出。后台代码如下,我依次试过,但都不行。
第一种:Close();第二种:this.Dispose();
Application.Exit();第三种:System.Diagnostics.Process.GetCurrentProcess().Kill();第四种: Process proc = Process.GetCurrentProcess();
proc.Kill(); 第五种:System.Diagnostics.Process tt = System.Diagnostics.Process.GetProcessById(System.Diagnostics.Process.GetCurrentProcess().Id);
tt.Kill();
但是都不行,急求帮助,帮我想想办法,感激不尽!
第一次运行(按F5或者ctl+F5)程序时正常,对代码或者窗体的某个属性值进行更改,然后再运行(按F5或者ctl+F5),程序就会报错:错误 1 无法将文件“obj\Debug\VechileManagement.exe”复制到“bin\Debug\VechileManagement.exe”。文件“bin\Debug\VechileManagement.exe”正由另一进程使用,因此该进程无法访问此文件。 VechileManagement然后在任务管理器当中会看到相应的进程正在运行,具体表现为程序退出时,进程无法结束。
退出方式:
添加Exit菜单,点击之后退出。后台代码如下,我依次试过,但都不行。
第一种:Close();第二种:this.Dispose();
Application.Exit();第三种:System.Diagnostics.Process.GetCurrentProcess().Kill();第四种: Process proc = Process.GetCurrentProcess();
proc.Kill(); 第五种:System.Diagnostics.Process tt = System.Diagnostics.Process.GetProcessById(System.Diagnostics.Process.GetCurrentProcess().Id);
tt.Kill();
但是都不行,急求帮助,帮我想想办法,感激不尽!
然后杀进程时,可以用
System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcesses(); foreach (System.Diagnostics.Process myProcess in myProcesses)
{
if (myProcess.ProcessName.Contains("VechileManagement"))
{
myProcess.Kill();
}
}
强行杀掉的想法不太好,还是得找找没有退出的原因,貌似你的系统有多线程(或者调用了非托管进程)。
如果是调用了多线程,必须在退出时通知子线程退出,并且用sonthread.join()方法等待子线程结束后再退出。如果有其他软件实例(如EXCEL),就必须释放干净对象后才能退出。
谢谢你的指导!
你的代码我添加了试过,还是不行,任务管理器中,VechileManagement.vshost.exe进程,始终关不掉,手动都关不了。
有VechileManagement.vshost.exe进程运行是不影响跑主程序的,你可以试试