如何防止重複執行程式

摘要:如何防止重複執行程式

原文位置:
http://forums.microsoft.com/msdn-cht/ShowPost.aspx?PostID=1835300&SiteID=14

Question:

我的環境是: WinXP pro + Office XP + VS.net 2005

我的程式有設定為單一執行個體,我希望如果使用者連續執行程式兩次時,只在第一次執行時出現Msgbox("Start Running"),我將下面的程式加入MDI母表單中

  1. Public Sub Me_Startup(ByVal sender As ObjectByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles  
  2. Me.Startup        
  3.    MsgBox("Start Running")            
  4. End Sub  
  5.      
  6. Public Event Startup(ByVal sender As ObjectByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs)  

Public Sub Me_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles
Me.Startup      
   MsgBox("Start Running")          
End Sub
   
Public Event Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs)

可是執行時並沒有作用,請問我要如何才能做到這樣的功能??

Answer:


您可以在Form_Load加入您想要加入的訊息就可以了;
另外補充一下,如果您在專案屬性中把"建立單一執行個體選項"勾選的話,執行第二次的時候會自動將焦點轉移到第一次執行的程式;如果不用這個方式去做的話,下面有另外一個方式可以參考看看


  1. Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As  
  2. System.EventArgs) Handles MyBase.Load  
  3. ''防止重複執行  
  4. If PrevInstance() Then  
  5. MessageBox.Show("程式執行中")  
  6. Application.Exit()  
  7. Exit Sub  
  8. End If  
  9. MessageBox.Show("Load")  
  10. End Sub  
  11.   
  12. Public Function PrevInstance() As Boolean  
  13. If UBound(Diagnostics.Process.GetProcessesByName(Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0 Then  
  14. Return True  
  15. Else  
  16. Return False  
  17. End If  
  18. End Function  

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
''防止重複執行
If PrevInstance() Then
MessageBox.Show("程式執行中")
Application.Exit()
Exit Sub
End If
MessageBox.Show("Load")
End Sub

Public Function PrevInstance() As Boolean
If UBound(Diagnostics.Process.GetProcessesByName(Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0 Then
Return True
Else
Return False
End If
End Function