Prendendo spunto da un
post ecco come si verifica se una istanza di una applicazione è già in esecuzione :
C# :In C# è necessario modificare il Main() inserendo un controllo su un oggetto mutex.
[STAThread]
static void Main()
{
bool ok;
System.Threading.Mutex m = new System.Threading.Mutex(true,"Stringa_qualsiasi", out ok);
if (!ok)
{
MessageBox.Show("Una istanza dell'applicazione è già in esecuzione.");
return;
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
GC.KeepAlive(m);
}
VB.net(2005) :Per VB le cose sono un pò diverse.
Andare nelle proprietà del progetto e attivare ‘Enable application framework’, successivamente nel pannello 'Windows application framework properties' attivare la voce ‘Make single instance application’.
Sempre nello stasso pannello, premere il bottone ‘View Application Events’. A questo punto potrete vedere il seguente codice (di ApplicationEvents.vb):
Namespace My
Partial Friend Class MyApplication
End Class
End Namespace
Per ottenere un avviso quando cercate di lanciare una applicazione già in esecuzione dovete aggiungere la gestione dell'evento MyApplication_StartupNextInstance.
Ecco come dovrete modificare ApplicationEvents.vb :
Imports Microsoft.VisualBasic.Devices
Imports Microsoft.VisualBasic.ApplicationServices
Namespace My
Partial Friend Class MyApplication
Private Sub MyApplication_StartupNextInstance(ByVal sender As Object, _
ByVal e As StartupNextInstanceEventArgs) _
Handles Me.StartupNextInstance
MessageBox.Show("Una istanza dell'applicazione è già in esecuzione.")
End Sub
End Class
End Namespace
Spero vi sia utile