Static mu As System.Threading.Mutex
Dim sucess As Boolean = False
mu = New System.Threading.Mutex(True, "productionsystem", sucess)
If Not sucess Then
e.HideSplashForm = True
MessageBox.Show("系统已经在运行,系统不支持重复开启!")
这里加什么代码可以关闭已有的线程?
e.Cancel = True
End If
之前在论坛学的放置重复启动的反复,通过mutex来闲置只有1个线程可以访问。
现在想在判断有重复线程时,关闭之前的线程。怎么做?
这个不合理,反正都要打开一个,既然有之前打开了的程序,就应该继续使用,不然可能导致没有保存的数据丢失。
因为之前打开的界面不存在。异常关闭了但是mutex还在。
如果经常异常关闭,应该是项目里有不合理的代码和设置,应该去查找并改正这些错误,而不是这种简单粗暴的对待。如果说只是偶尔出现的情况,手工到任务管理器里找到进程关闭好了。
如果要强制杀进程可以使用kill
Dim ps As System.Diagnostics.Process() = System.Diagnostics.Process.GetProcesses()
For Each p As System.Diagnostics.Process In ps
'output.show(p.processName)
If ("Foxtable.exe(如果是的程序改为在任务管理器种看到的进程名称即可)" = p.ProcessName)
p.kill
End If
Next
异常关闭经常出现在升级的时候,员工点升级后,升级完成的界面出来后会立刻再次开启,其实这时候主文件并没有被升级包里面的替换,就会卡死。关闭软件进程也还在
不要在升级后自己写代码重启,应该彻底关闭,然后重新打开程序。