IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

S'assurer qu'aucun transfert est en cours avant de quitter une appli


Sujet :

C#

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Points : 218
    Points
    218
    Par défaut S'assurer qu'aucun transfert est en cours avant de quitter une appli
    Bonjour,

    j'ai une appli winForm qui effectue des transferts de fichiers par ftp.

    Au moment de quitter l'application, je voudrais m'assurer qu'aucun transfert n'est en cours
    et si c'est il y en a un, attendre qu'il soit terminé avant effectivement de quitter l'appli

    Comment faire?
    Je pense bien à un attribut booléen transfertEnCours,
    que je mettrai à true avant de lancer un transfert et à false quand il est fini
    mais après?...

    et puis sur quel évènement doit-on effectuer cette vérif
    closed ou closing? est-ce que ça change quelque chose?

    merci

  2. #2
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    Closing car c'est là que tu annules la fermeture. closed, c'est quand ...c'est trop tard

    ps: ta solution du booléen ne marchera que si ton appli ne sait faire qu'un seul transfert à la fois
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Points : 218
    Points
    218
    Par défaut
    oui, je fais qu'un seul transfert,
    il peut y en avoir plusieurs
    mais les uns après les autres...
    il vaut peut-être mieux que je mettre un booléen 'quitter' à true quand je veux fermer
    et que je vérifie après le transfert si cet attribut est effectivement à true et si c'est le cas, faire un Close()

    qu'en pensez-vous?

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    salut

    Une solution (qui me semblerait être "LA" solution) serait que les transferts FTP soient executés dans un Thread (backgroundworker thread par exemple)

    et qu'à chaque fois que tu crées un thread, tu es un compteur de chargement activé... et qu'en un thread (chargement) se termine, tu décrémentes ce compteur... comme cela, tu sauras exactement combien il t'en reste en cours...

    Voir mettre dans le compteur plus d'information (par exemple, le nom du transfert ou ses caractéristiques), comme cela, l'utilisateur pourrait avoir le choix de fermer l'application (si il juge que les transferts en cours peuvent etre fait plus tard, par exemple)

    The Monz, Toulouse
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  5. #5
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    ton dernier message dit l'inverse du premier.
    tu veux fermer quand l'appli a fini son dernier transfert ou tu veux empêcher la fermeture tant qu'un transfert est en cours. parce que si c'est la deuxième solution je vois pas à quoi sert ton close() car tu es déjà dans closing() donc ca bouclerait à l'infini.

    tu fais juste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(!encours)
     e.Cancel = true;
    ou un truc du genre
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Points : 218
    Points
    218
    Par défaut
    Citation Envoyé par Louis-Guillaume Morand Voir le message
    t
    tu veux fermer quand l'appli a fini son dernier transfert ou tu veux empêcher la fermeture tant qu'un transfert est en cours
    désolée si je ne suis pas trop claire...
    je veux attendre que le transfert soit fini pour fermer l'appli...

  7. #7
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    alors une solution rapide, c'est dans closing(), faire un cancel=true MAIS lancer un timer qui toutes les 2secondes par exemple, vérifie l'état du booléen (ou du compteur) puis faire ton Close() mais cela ne va-t-il pas faire tourner en boucle
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Points : 218
    Points
    218
    Par défaut
    Citation Envoyé par Louis-Guillaume Morand Voir le message
    alors une solution rapide, c'est dans closing(), faire un cancel=true MAIS lancer un timer qui toutes les 2secondes par exemple, vérifie l'état du booléen (ou du compteur) puis faire ton Close()
    oui,
    j'y pensais aussi
    mais cela ne va-t-il pas faire tourner en boucle
    mais c'est ce que je me dis aussi...
    c'est pour ça que je me disais que je pourrais faire cancel=true, mettre une variable booléen 'quitter' à true
    et quand un transfert est terminé, faire un test sur cette variable et si elle est à true, faire le Close...

    ça serait sûrement mieux, non?

  9. #9
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    c'est pour ça que je me disais que je pourrais faire cancel=true, mettre une variable booléen 'quitter' à true
    et quand un transfert est terminé, faire un test sur cette variable et si elle est à true, faire le Close...
    là c'est plus clair et surtout c'est sûrement la solution la plus propre
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Points : 218
    Points
    218
    Par défaut
    ouki!

    merci bien Louis-Guillaume,
    à bientôt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/12/2009, 23h23
  2. Réponses: 2
    Dernier message: 09/07/2008, 14h53
  3. savoir si un module est en cours d'utilisation
    Par stoyak dans le forum Bioinformatique
    Réponses: 4
    Dernier message: 22/02/2006, 12h07
  4. Comment savoir si un Thread est en cour dexecution?
    Par Soulama dans le forum Langage
    Réponses: 3
    Dernier message: 16/01/2006, 16h48
  5. Tester si une procedure est en cours d'éxécution
    Par tipiweb dans le forum Langage
    Réponses: 3
    Dernier message: 27/07/2005, 14h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo