Siteauludo
Messages postés60Date d'inscriptionmercredi 25 mai 2005StatutMembreDernière intervention15 mai 2007
-
23 avril 2006 à 16:57
cs_maneli
Messages postés8Date d'inscriptiondimanche 16 décembre 2007StatutMembreDernière intervention21 décembre 2007
-
21 déc. 2007 à 01:03
Bonjour,
voilà j'utilise Microsoft Visual Studio Standart Edition 2005, je programme en C# (pas de Dot Net (.NET)). Je souhaiterai lancer plusieurs Windows Forms en même temps. Je m'explique : j'ai un fichier .cs Start.cs, avec environs quatre forms. Depuis Start.cs, aucun problème pour lancer une form : application.run(form). Mais moi je voudrai lancer le quatre forms en même temps, et application.run ne me permet pas de faire ça, car si dans Start.cs je fais ça, il va passer la main à la form indiquée, et lorsque je ferme la form, il va retourner dans Start.cs pour continuer à executer le code. J'ai cherché, et le moyen le plus simple (enfin il me semble) et d'utiliser le multithreading, mais il me trouve des erreurs bizarres :
Thread unThread1 =
new
Thread(
new
ThreadStart());
unThread1.Start();
Thread unThread2 =
new
Thread(
new
ThreadStart());
unThread2.Start();
Thread unThread3 =
new
Thread(
new
ThreadStart());
unThread3.Start();
Thread unThread4 =
new
Thread(
new
ThreadStart());
unThread4.Start();
}
}
class
launchPrograms
{
public
void launchSecureScreen
{
Application.Run(
new SecureScreenForm());
}
public
void launchClipBoardManager
{
Application.Run(
new ClipBoardManagerForm());
}
public
void launchFilesLocker
{
Application.Run(
new FilesLockerForm());
}
public
void launchPasswordSecurityChecker
{
Application.Run(
new PasswordSecurityCheckerForm());
}
}
}
Mais il me souligne tout les application (ici en rouge), et il me dit : "A get or set accessor expected ".
Auriez-vous une idée pour corriger cette erreur ?
Auriez-vous une méthode plus efficace ?
Siteauludo
Messages postés60Date d'inscriptionmercredi 25 mai 2005StatutMembreDernière intervention15 mai 2007 23 avril 2006 à 18:27
Merci beaucoup !
Pour les futurs personnes qui auront ce problème :
puisque la fermeture de l'application n'est plus "automatique", il faut faire un Application.Exit(), ou un ExitThread, sinon il n'y aura plus de fenêtres visibles, mais le programme restera lancé.
cs_maneli
Messages postés8Date d'inscriptiondimanche 16 décembre 2007StatutMembreDernière intervention21 décembre 2007 21 déc. 2007 à 01:03
Bonsoir.
J'ai un problème similaire car je dois lancer un socket listener ainsi qu'un form.
or si je lance le socketlistener (listener.Start(); ClientTask.Start()) je perds la main.et le lancement de application.start(new form()) n'a pas lieu.
Je veux connaitre le moyen de lancer , par exemple plusieurs serveurs ou processus depuis 1 meme programme.
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 23 avril 2006 à 17:29
Salut,
Avoir plusieurs thread de GUI ne me parait pas forcément une bonne idée.
D'ailleurs je me demande même si c'est possible sur du Win32. (?)
Première étape : Application.Run.
Et tels qu'ils sont, tes threads ne risquent pas de se lancer de toute façon.
Ta méthode de vérification d'instance unique est dangereuse et inefficace : il suffit de nommer un programme de la même manière que le tiens pour que ton single instance devienne un zero instance ;-)
Regarde plutôt du côté des mutex, ce qui te permettra aussi de gérer l'aspect multiutilisateur.
Pour ton lancement multi-forme, ne peut tu pas avoir un formulaire principal qui gère les autres ?
Sinon, tu peux faire ceci :
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 form1 = new Form1();
form1.Show();
Form2 form2 = new Form2();
form2.Show();
Form3 form3 = new Form3();
form3.Show();
Form4 form4 = new Form4();
form4.Show();
Application.Run();
}
Il faudrat que tu gères la fermeture de l'application, elle n'est plus "automatique", voir doc Application.Run()