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

Dotnet Discussion :

Parallélisme => Objet supprimé


Sujet :

Dotnet

  1. #1
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut Parallélisme => Objet supprimé
    Bonjour @ tous,

    Je m'évertue depuis un moment à faire du // de façon toute bête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ...
    Dim tArts = Task.Factory.StartNew(Sub()
                                                  Arts.GetAll()
                                                  setMsg($"Articles chargés: {tblArticles.msgErr}")
                                              End Sub)
    ..
     
        Sub setMsg(str As String)
    ...
            If (txtInfos.InvokeRequired) Then txtInfos.BeginInvoke(New setControlStr(AddressOf ctrlAddText), txtInfos, $"{str}{Environment.NewLine}", 1) Else txtInfos.AppendText($"{str}{Environment.NewLine}") ' Gérer les accès concurrentiels.
        End Sub
    J'utilise setMsg(...) un peu partout dans mon formulaire.
    Des fois dans un Task, des fois non.
    Et par moment (c'est aléatoire), il me met ce message d'erreur sur txtInfos.AppendText($"{str}{Environment.NewLine}" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Impossible d'accéder à un objet supprimé. Nom de l'objet : 'TextBox'
    C'est incompréhensible, je n'arrive pas à trouver un cas de figure similaire sur la toile.

    Avez vous une idée ?

  2. #2
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    On dirait que la méthode Dispose() de ta TextBox a été appelé. Peux-tu vérifier la prochaine que cela se produit ce que te retourne TextBox.IsDisposed() ?

  3. #3
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut
    (re)Salut Dorinf,

    Comme tu vois, on dirait qu'une entité divine (le grand hifboul, surement ) ne veux pas que je le fasse ce fichu formulaire, hi.

    Ok, je teste ça à prochaine exception, merci pour la piste.

    Bon WE !

  4. #4
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut
    Salut Dorinf,

    En effet, le IsDisposed est à true.
    Mais à y penser, c'est moi qui déraille.
    En fait, je lance un traitement long en //, et à la fin, j'affiche un message.
    Or, le souci apparait lorsque je ferme la fenêtre avant que le traitement ne soit fini.
    Le bug est donc logique, il cherche à afficher un message dans un control de la fenêtre alors qu'elle est fermée, donc le control libéré.
    du coup, je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            If (txtInfos.InvokeRequired) Then ' Gérer les accès concurentiels.
                txtInfos.BeginInvoke(New setControlStr(AddressOf ctrlAddText), txtInfos, $"{str}{Environment.NewLine}", 1)
            ElseIf (Not txtInfos.IsDisposed) Then
                txtInfos.AppendText($"{str}{Environment.NewLine}")
            End If
    Merci pour ta participation.

  5. #5
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    mais de rien

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

Discussions similaires

  1. [Débutant] Nettoyage des objets supprimés
    Par knarf44 dans le forum C#
    Réponses: 0
    Dernier message: 01/12/2015, 09h49
  2. Réponses: 12
    Dernier message: 27/07/2015, 08h32
  3. Reférence sur un objet supprimé
    Par PilloBuenaGente dans le forum Débuter
    Réponses: 7
    Dernier message: 25/03/2013, 20h59
  4. [WCF]Impossible d'accéder à un objet supprimé.
    Par Sonny dans le forum Windows Communication Foundation
    Réponses: 1
    Dernier message: 15/04/2008, 20h48
  5. Taille base / objets supprimés
    Par Laverdure_mt dans le forum Access
    Réponses: 2
    Dernier message: 31/03/2008, 10h30

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