加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

[VB.NET]再问关于“生成单个应用程序实例”的问题

发布时间:2020-12-16 23:38:36 所属栏目:大数据 来源:网络整理
导读:再问关于“生成单个应用程序实例”的问题 刚才在论坛中找了一下,发现有人提供如下代码: Shared Sub main(ByVal cmdargs() As String) Dim createdNew As Boolean 返回是否赋予使用线程的互斥体初始所属权 Dim Instance As System.Threading.Mutex 同步基元

再问关于“生成单个应用程序实例”的问题
刚才在论坛中找了一下,发现有人提供如下代码:

Shared Sub main(ByVal cmdargs() As String) Dim createdNew As Boolean 返回是否赋予使用线程的互斥体初始所属权 Dim Instance As System.Threading.Mutex 同步基元变量 Instance = New System.Threading.Mutex(True,MutexName,createdNew) If createdNew Then 赋予了线程初始所属权,也就是首次使用互斥体 System.Windows.Forms.Application.Run(New Form1) 运行程序 Instance.ReleaseMutex() 释放Mutex一次 Else MessageBox.Show( 该程序已经启动,禁止启动多个实例,MessageBoxButtons.OK,MessageBoxIcon.Stop) Application.Exit() End If End Sub 我把如上代码分别放到Form1.Desinger.vb和Form1.vb中均没有效果。烦请高手能详细告知。 另外如何再次大开程序的时候让已经打开的程序成为当前窗体。 __________________________________________________________________________ 坐着沙发等高手来解答 __________________________________________________________________________ 我是这样做的 在模块中写 For single instance Public Function CheckNimsRunning() As Integer Dim pTmp As Process() = Process.GetProcesses() Dim pCurrent As Process = Process.GetCurrentProcess() If (pTmp.Length > 0) Then Dim i As Integer While (i < pTmp.Length) If (pTmp(i).Id > 4) Then If (pTmp(i).Id <> pCurrent.Id) Then If (pTmp(i).MainModule.ModuleName = pCurrent.MainModule.ModuleName) Then If (pTmp(i).ProcessName = pCurrent.ProcessName) Then Return (pTmp(i).Id) End If End If End If i = i + 1 End While End If Return (0) End Function 然后在入口的 Form_Load 中合适的位置写入下代码 For single instance Dim pNimsID As Integer = CheckNimsRunning() If (pNimsID > 0) Then AppActivate(pNimsID) Me.Close() Exit Sub End If __________________________________________________________________________ 而且貌似在 Project 的属性中,应用程序选项下有个 “启用应用程序框架”,里面有个选项叫“生成单个实例应用程序”,可能和你的要求有关。不过我已经用了上面的方法了,就没有再测试这个(我的Project就要完工了,我不想节外生枝),如果你测试了,不管什么结果,希望能告诉我,谢谢先 __________________________________________________________________________ 刚才又仔细看了一下你贴的代码,发现是 Sub Main,Sub Main是要放到模块里面并且设置为启动入口才行 __________________________________________________________________________ 2005中有个选项选中即可。 __________________________________________________________________________ 2003 http://faq.csdn.net/read/209901.html __________________________________________________________________________ to sx_lxh: 你是说2005中工程属性中的只生成单个应用程序实例选项吧 这个当工程打开时需要访问网络,而且无法提示用户程序已经打开,并把窗体置为当前窗体! __________________________________________________________________________ 多谢sx_lxh了! __________________________________________________________________________

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读