delewrocks
Messages postés9Date d'inscriptiondimanche 11 juin 2006StatutMembreDernière intervention22 mars 2007
-
28 déc. 2006 à 13:16
t_barbillon
Messages postés341Date d'inscriptionmercredi 8 juin 2005StatutMembreDernière intervention10 février 2009
-
29 déc. 2006 à 10:49
Bonjour à tous,
J'ai un petit problème, j'ouvre une form en c# avec un constructeur de mon objet form, j'effectue un traitement sur une base de donnée +- long avec un affichage des oppérations effectuée et à la fin de mon contructeur je voudrais fermer la fenêtre mais celà ne fonctionne pas !!! Comment puis-je faire ?
t_barbillon
Messages postés341Date d'inscriptionmercredi 8 juin 2005StatutMembreDernière intervention10 février 20092 28 déc. 2006 à 13:21
Je ne suis pas sur d'avoir tout bien suivi, le traitement sur la bdd est effecté dans le constructeur de la form?
Quand tu dis cela ne fonctionne pas, c'est la fermeture ou le tritement sur la bdd? As tu une exception?
delewrocks
Messages postés9Date d'inscriptiondimanche 11 juin 2006StatutMembreDernière intervention22 mars 2007 28 déc. 2006 à 13:35
Mon problème est que je n'arrive pas à fermer la form a la fin du constructeur de celle si ce qui est logique, mais je voudrais savoir comment faire, tous ce qui est traitement fonctionne impect avec exception et tout et tout mais c'est au niverzau de la fermeture de ma form ke j'ai un probleme, elle doit etre fermée automatiquement à la fin de tout le traitement c'est une application qui est exécutée par un scheduler. Donc elle affiche les traitement et puis se ferme quoi qu'il arrive.
delewrocks
Messages postés9Date d'inscriptiondimanche 11 juin 2006StatutMembreDernière intervention22 mars 2007 28 déc. 2006 à 14:06
Voici un petit bout de code de ma form mais c'est du classique et le traitement lui n'est pas mis en cause.
namespace Rank_Calculator
{
public partial class RankCalculator : Form
{
public RankCalculator()
{
InitializeComponent();
Calcul_Rank(); //traitement dans la db ki fonctionne parfaitement.
this.Close(); //ne fonctionne pas c'est un truc comme ca ke je voudrais faire.
}
t_barbillon
Messages postés341Date d'inscriptionmercredi 8 juin 2005StatutMembreDernière intervention10 février 20092 28 déc. 2006 à 14:16
A mon avis, il vaudrait mieux que tu découpes ton code, en mettant Calcul_Rank dans l'évenement OnLoad ou OnActivate, après le traitement tu appelles this.Close
En voyant ton code, je me demande comment tu peux afficher tes opérations
delewrocks
Messages postés9Date d'inscriptiondimanche 11 juin 2006StatutMembreDernière intervention22 mars 2007 28 déc. 2006 à 14:25
j'ai une text box dans la form et je lui ajoute des string et cela dans calcul rank, donc calcul rank enmploi un objet textbox de la form, je ne peut pas donc pas sortir Calcul_Rank()
t_barbillon
Messages postés341Date d'inscriptionmercredi 8 juin 2005StatutMembreDernière intervention10 février 20092 28 déc. 2006 à 14:36
Sinon le mieux serait de tout découpler, d'un côté ta form avec une textbox, de l'autre une thtread éxécutant Calcul_Rank déclenchant deux types d'évenements pour actualiser (ne pas oublier d'utiliser Invoke) et fermer la fenêtre.
Donc tu aurais dans ta form,
Sur le OnLoad : l'exécution de Calcul_Rank
Sur l'evènement Actualiser : l'ajout de string dans ta textbox avec Invoke
Sur l'evènement Fermer : la fermeture de ta form
t_barbillon
Messages postés341Date d'inscriptionmercredi 8 juin 2005StatutMembreDernière intervention10 février 20092 29 déc. 2006 à 10:49
Euh, j'étais pas très en forme hier : si ton traitement est long ou gourmand le placer dans le OnLoad va ralentir voir mettre en pause l'affichage de la form, il faut donc plutôt utiliser l'évènement OnActivate.
La seconde solution consiste à avoir deux threads, une pour l'ihm et une autre pour les calculs. La thread de calculs se contente de faire ton traitement sur la bdd et met à disposition (via un évènement) des informations pour l'actualisation. Comme ça l'IHM et les calculs ne sont pas liés, l'actualisation étant faite via la réception d'evènement.