Come evitare di duplicare l'applicazione Form Main C#

martedì 24 agosto 2010 - 19.12
Tag Elenco Tags  C#  |  .NET 2.0  |  .NET 3.0  |  Windows XP  |  Visual Studio 2008  |  MySQL 5.1

jlsweb Profilo | Newbie

Ciao ragazzi!

Ho un piccolo problemino riguardante l'apertura di mio applicativo sviluppato in C#.
Un mio cliente mi ha fatto notare che cliccando due volte sull'icona del software appaiono 2 finestre del programma. Esiste un metodo per evitare la duplicazione?

Uso Visual Studio 2008, ambiente C#

Grazie mille.

Overcloked Profilo | Newbie

Devi Controllare se Esiste un processo con il nome della tua app

Qui ti faccio un esempio con un Console App
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TestApp { class Program { static void Main(string[] args) { var Process = from p in System.Diagnostics.Process.GetProcesses() where p.ProcessName.StartsWith("TestApp") // Nome della mia App select p; if (!(Process.Count() > 1 )) { Console.Write("Nessuna Altra Istanza "); } else if (Process.Count() > 1) { Console.Write("Applicativo gia in esecuzione "); } Console.ReadKey(); } } }

jlsweb Profilo | Newbie

Ciao Overcloked sei stato molto gentile nel rispondermi.

Avrei soltanto un'altra piccola domanda. Una volta creato la funzionte static void Main
da dove la devo richiamare? Dalla FormLoad? La funzione l'ho inserita sulla mia FormContainer seguendo ovviamente tuo esempio.

Grazie!

Questo è il codice del mio programma:

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Linq; using System.Drawing; using System.Text; using System.Windows.Forms; namespace Schedario { public partial class Form1 : Form { SystemManager oSysManager = new SystemManager(); static void Main(string[] args) { var Process = from p in System.Diagnostics.Process.GetProcesses() where p.ProcessName.StartsWith("Form1") // Nome della mia App select p; if (!(Process.Count() > 1)) { Console.Write("Nessuna Altra Istanza "); } else if (Process.Count() > 1) { Console.Write("Applicativo gia in esecuzione "); } Console.ReadKey(); } public Form1() { InitializeComponent(); } } }

jlsweb Profilo | Newbie

Fatto! Risolto! Il tutto va inserito sotto programs.cs del C#.

Grazie Mille per l'aiuto.

Overcloked Profilo | Newbie

scusa se non ti ho ho risposto ma avevo problemi di connessione
kmk sn lieto che tu abbia risolto U.U

Saluti
Matteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5