以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  重复启动  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=191239)

--  作者:lur320
--  发布时间:2024/4/3 15:38:00
--  重复启动
 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个线程可以访问。

现在想在判断有重复线程时,关闭之前的线程。怎么做?

--  作者:有点蓝
--  发布时间:2024/4/3 15:48:00
--  
这个不合理,反正都要打开一个,既然有之前打开了的程序,就应该继续使用,不然可能导致没有保存的数据丢失。
--  作者:lur320
--  发布时间:2024/4/3 15:52:00
--  
 因为之前打开的界面不存在。异常关闭了但是mutex还在。
--  作者:有点蓝
--  发布时间:2024/4/3 16:06:00
--  
如果经常异常关闭,应该是项目里有不合理的代码和设置,应该去查找并改正这些错误,而不是这种简单粗暴的对待。如果说只是偶尔出现的情况,手工到任务管理器里找到进程关闭好了。

如果要强制杀进程可以使用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

--  作者:lur320
--  发布时间:2024/4/3 16:10:00
--  
 异常关闭经常出现在升级的时候,员工点升级后,升级完成的界面出来后会立刻再次开启,其实这时候主文件并没有被升级包里面的替换,就会卡死。关闭软件进程也还在


--  作者:有点蓝
--  发布时间:2024/4/3 16:30:00
--  
不要在升级后自己写代码重启,应该彻底关闭,然后重新打开程序。