2010-06-15 3 views
0

J'avais initialement créé un formulaire Windows pour être un dialogue de mon formulaire principal de projets. Maintenant, le dialogue devient suffisamment complexe pour être lancé dans son propre processus. Existe-t-il un moyen de le faire dans le code ou dois-je créer un nouveau projet et y associer mes fichiers?Spawning form dans le nouveau processus

+1

Pouvez-vous clarifier pour moi pourquoi vous avez besoin du formulaire dans un processus séparé? Cela conduira à des difficultés (pas insurmontables, mais inefficaces) dans le partage d'informations entre le formulaire et le reste de l'application ... Si c'est juste parce que le formulaire va beaucoup de calcul par exemple, avez-vous envisagé le multithread? –

+0

Il est lié à ceci: http://stackoverflow.com/questions/3026294/decompressing-a-very-large-serialized-object-and-managing-memory essentiellement, quand je ferme ma boîte de dialogue, même si je S'assurer que Dispose est appelé, le CPU s'assoit et tourne à 50%. –

Répondre

3

Je remets en question la prémisse ici - il n'y a aucune raison de commencer nécessairement une nouvelle "forme" dans un processus séparé. Si le formulaire devient complexe, je vous recommande de le simplifier, si ce n'est pour d'autres raisons que la facilité d'utilisation. Ceci étant dit, vous pouvez toujours lancer un nouveau processus via le code Process.Start. Si vous voulez que ce soit dans le même projet, mais démarrez un processus séparé, vous pouvez lancer l'exécutable exe avec un argument de ligne de commande qui vous permet de changer quel "formulaire" est chargé au démarrage.

1

Vous aurez besoin de configurer un calque de communication (WCF utilisant des tubes nommés serait probablement la meilleure solution).

Mais je me demanderais sérieusement pourquoi vous avez besoin d'un nouveau processus pour votre formulaire? Assurez-vous que tout ce que vous faites sur votre formulaire est fait sur un fil séparé. De cette façon, vous pouvez avoir des dizaines de formulaires ouverts, mais votre application restera très réactive. Ce n'est pas la meilleure solution, mais si vous essayez d'éviter une réécriture, un appel à Application.DoEvents va pomper la file d'attente des messages et vous rendre un peu réactif si vous avez beaucoup de mises à jour sur votre interface utilisateur. Bande d'aide à votre problème cependant.

Questions connexes