概述
<script type="text/javascript">
</script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
再问关于“生成单个应用程序实例”的问题
刚才在论坛中找了一下,发现有人提供如下代码:
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了!
__________________________________________________________________________
最后
以上就是故意大象为你收集整理的[VB.NET]再问关于“生成单个应用程序实例”的问题的全部内容,希望文章能够帮你解决[VB.NET]再问关于“生成单个应用程序实例”的问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复