none
¨Message d'erreur a la fermeture d'une fenetre RRS feed

  • Discussion générale

  • Bonjour a tous,

    Je re-post cette question, qui est rester sans réponse, faute d'éléments de ma part !

     

    Voila j'ai cette fenetre d'erreur a la fermeture de certaine form de mon appli :

    See the end of this message for details on invoking 
    just-in-time (JIT) debugging instead of this dialog box.
    
    ************** Exception Text **************
    System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
       at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
       at System.Collections.Generic.List`1.Enumerator.MoveNextRare()
       at System.Collections.Generic.List`1.Enumerator.MoveNext()
       at Microsoft.VisualBasic.PowerPacks.ShapeCollection.Dispose(Boolean disposing)
       at Microsoft.VisualBasic.PowerPacks.ShapeContainer.Dispose(Boolean disposing)
       at System.ComponentModel.Component.Dispose()
       at System.Windows.Forms.Control.Dispose(Boolean disposing)
       at System.Windows.Forms.Form.Dispose(Boolean disposing)
       at Easybat.Adressage.Dispose(Boolean disposing)
       at System.ComponentModel.Component.Dispose()
       at System.Windows.Forms.Form.WmClose(Message& m)
       at System.Windows.Forms.Form.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    
    
    ************** Loaded Assemblies **************
    mscorlib
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
        CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
    ----------------------------------------
    EasyBat©
        Assembly Version: 2.1.0.0
        Win32 Version: 1.0.0.0
        CodeBase: file:///C:/Documents%20and%20Settings/DIEZt/Local%20Settings/Apps/2.0/CJQYMYE2.GAX/JX54L8DT.D6D/easy..tion_f6916a4d900f3acc_0002.0001_fcd99e6281416f03/EasyBat%A9.exe
    ----------------------------------------
    Microsoft.VisualBasic
        Assembly Version: 10.0.0.0
        Win32 Version: 10.0.30319.1 built by: RTMRel
        CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
    ----------------------------------------
    System
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.1 built by: RTMRel
        CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
    ----------------------------------------
    System.Core
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.1 built by: RTMRel
        CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
    ----------------------------------------
    System.Windows.Forms
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.1 built by: RTMRel
        CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    ----------------------------------------
    System.Drawing
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.1 built by: RTMRel
        CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
    ----------------------------------------
    System.Runtime.Remoting
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
        CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
    ----------------------------------------
    Microsoft.VisualBasic.PowerPacks.Vs
        Assembly Version: 10.0.0.0
        Win32 Version: 10.0.20911.1
        CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.VisualBasic.PowerPacks.Vs/10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.PowerPacks.Vs.dll
    ----------------------------------------
    System.Xml
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.1 built by: RTMRel
        CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
    ----------------------------------------
    System.Configuration
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
        CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
    ----------------------------------------
    pvmiaxnn
        Assembly Version: 2.1.0.0
        Win32 Version: 4.0.30319.1 built by: RTMRel
        CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
    ----------------------------------------
    
    ************** JIT Debugging **************
    To enable just-in-time (JIT) debugging, the .config file for this
    application or computer (machine.config) must have the
    jitDebugging value set in the system.windows.forms section.
    The application must also be compiled with debugging
    enabled.
    
    For example:
    
    <configuration>
        <system.windows.forms jitDebugging="true" />
    </configuration>
    
    When JIT debugging is enabled, any unhandled exception
    will be sent to the JIT debugger registered on the computer
    rather than be handled by this dialog box.

    Quelqu'un aurais une idée ??

    • Type modifié Ciprian Duduiala lundi 26 septembre 2011 10:02 attente de feedback
    mardi 20 septembre 2011 11:49

Toutes les réponses

  • Bonjour,

    Est-ce que vous ne modifier pas une collection générique dans une boucle ?

    Pouvez-vous nous montrer le code où vous avez cette erreur ?

     


    fred
    mardi 20 septembre 2011 12:18
  • bonjour,

    Même question que Fred75

    Si vous avez cette erreur a la fermeture d'une form c'est qu'a un moment donner vous avez mis du code dans [Form]Closing ou Close
    Ou alors vous avez fait une routine dans un event de form ou cela n'aurais pas de temps de terminer correctement, il faudra peut etre annuler la demande de fermeture, faire le traitement et fermer la form

     

     


    Cordialement,
    Xavier TALOUR
    Alias Troxsa SendMail
    Voir le profil de Xavier TALOUR sur LinkedIn
    mardi 20 septembre 2011 13:38
    Auteur de réponse
  • Bonjour, Sinki42,

    Est-ce que vous avez réussi à résoudre votre problème ? Sinon, pouvez-vous svp nous montrer le code où l’erreur est apparue comme Fred vous a déjà demandé ? Merci de tenir la communauté informée sur la suite de vos démarches.

     

    Cordialement,

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    jeudi 22 septembre 2011 06:40
  • Bonjour fred,

    Effectivement je serialise des donnees avant de fermer :

    Comment proceder alors ???!!!

    Le code d'une fenetre :

    Private Sub Rack1_cycle1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Try
    
          If Timer1.Enabled Or Timer2.Enabled Or Timer3.Enabled Or Timer4.Enabled Or Timer5.Enabled Or Timer6.Enabled Then
    
            If (MsgBox("Enregistrement(s) en cours, Voulez vous vraiment fermer ?", vbYesNo) = DialogResult.No) Then
              e.Cancel = True
              Exit Sub
            End If
          End If
    
          sensor.close()
    
          If SerialPort1.IsOpen Then
            GC.ReRegisterForFinalize(SerialPort1.BaseStream)
            SerialPort1.Close()
          End If
    
          Timer8.Enabled = False
    
          Dim v As New SuivieEtape1
          Dim Writer = New XmlSerializer(GetType(SuivieEtape1))
          Dim file = New StreamWriter("C:\EasyBat\NUMEROS DE SERIE\" & NomRACK1 & "SuivieEtape1.xml")
          Try
            v.DR_Effectué = Rack1_cycle1Effectué
            v.CDC_Effectué = Rack1_cycle2Effectué
            v.EDC_Effectué = Rack1_cycle3Effectué
            v.CAE_Effectué = Rack1_cycle4Effectué
    
            v.DR_Debuté = Rack1_cycle1EnCours
            v.CDC_Debuté = Rack1_cycle2EnCours
            v.EDC_Debuté = Rack1_cycle3EnCours
            v.CAE_Debuté = Rack1_cycle4EnCours
    
            v.Mem_Acquisition = Acquistion
    
            Writer.Serialize(file, v)
            file.Close()
            v = Nothing
    
            Dim v2 As New SuivieEtape2
            Dim Writer2 = New XmlSerializer(GetType(SuivieEtape2))
            Dim file2 = New StreamWriter("C:\EasyBat\NUMEROS DE SERIE\" & NomRACK2 & "SuivieEtape2.xml")
    
            v2.DR_Effectué = Rack2_cycle1Effectué
            v2.CDC_Effectué = Rack2_cycle2Effectué
            v2.EDC_Effectué = Rack2_cycle3Effectué
            v2.CAE_Effectué = Rack2_cycle4Effectué
    
            v2.DR_Debuté = Rack2_cycle1EnCours
            v2.CDC_Debuté = Rack2_cycle2EnCours
            v2.EDC_Debuté = Rack2_cycle3EnCours
            v2.CAE_Debuté = Rack2_cycle4EnCours
    
            v2.Mem_Acquisition = Acquistion2
    
            Writer2.Serialize(file2, v2)
            file2.Close()
            v2 = Nothing
    
            Dim v3 As New SuivieEtape3
            Dim Writer3 = New XmlSerializer(GetType(SuivieEtape3))
            Dim file3 = New StreamWriter("C:\EasyBat\NUMEROS DE SERIE\" & NomRACK3 & "SuivieEtape3.xml")
    
            v3.DR_Effectué = Rack3_cycle1Effectué
            v3.CDC_Effectué = Rack3_cycle2Effectué
            v3.EDC_Effectué = Rack3_cycle3Effectué
            v3.CAE_Effectué = Rack3_cycle4Effectué
    
            v3.DR_Debuté = Rack3_cycle1EnCours
            v3.CDC_Debuté = Rack3_cycle2EnCours
            v3.EDC_Debuté = Rack3_cycle3EnCours
            v3.CAE_Debuté = Rack3_cycle4EnCours
    
            v3.Mem_Acquisition = Acquistion3
    
            Writer3.Serialize(file3, v3)
            file3.Close()
            v3 = Nothing
    
            Dim v4 As New SuivieEtape4
            Dim Writer4 = New XmlSerializer(GetType(SuivieEtape4))
            Dim file4 = New StreamWriter("C:\EasyBat\NUMEROS DE SERIE\" & NomRACK4 & "SuivieEtape4.xml")
    
            v4.DR_Effectué = Rack4_cycle1Effectué
            v4.CDC_Effectué = Rack4_cycle2Effectué
            v4.EDC_Effectué = Rack4_cycle3Effectué
            v4.CAE_Effectué = Rack4_cycle4Effectué
    
            v4.DR_Debuté = Rack4_cycle1EnCours
            v4.CDC_Debuté = Rack4_cycle2EnCours
            v4.EDC_Debuté = Rack4_cycle3EnCours
            v4.CAE_Debuté = Rack4_cycle4EnCours
    
            v4.Mem_Acquisition = Acquistion4
    
            Writer4.Serialize(file4, v4)
            file4.Close()
            v4 = Nothing
    
            Dim v5 As New SuivieEtape5
            Dim Writer5 = New XmlSerializer(GetType(SuivieEtape5))
            Dim file5 = New StreamWriter("C:\EasyBat\NUMEROS DE SERIE\" & NomRACK5 & "SuivieEtape5.xml")
    
            v5.DR_Effectué = Rack5_cycle1Effectué
            v5.CDC_Effectué = Rack5_cycle2Effectué
            v5.EDC_Effectué = Rack5_cycle3Effectué
            v5.CAE_Effectué = Rack5_cycle4Effectué
    
            v5.DR_Debuté = Rack5_cycle1EnCours
            v5.CDC_Debuté = Rack5_cycle2EnCours
            v5.EDC_Debuté = Rack5_cycle3EnCours
            v5.CAE_Debuté = Rack5_cycle4EnCours
    
            v5.Mem_Acquisition = Acquistion5
    
            Writer5.Serialize(file5, v5)
            file5.Close()
            v5 = Nothing
    
            Dim v6 As New SuivieEtape6
            Dim Writer6 = New XmlSerializer(GetType(SuivieEtape6))
            Dim file6 = New StreamWriter("C:\EasyBat\NUMEROS DE SERIE\" & NomRACK6 & "SuivieEtape6.xml")
    
            v6.DR_Effectué = Rack6_cycle1Effectué
            v6.CDC_Effectué = Rack6_cycle2Effectué
            v6.EDC_Effectué = Rack6_cycle3Effectué
            v6.CAE_Effectué = Rack6_cycle4Effectué
    
            v6.DR_Debuté = Rack6_cycle1EnCours
            v6.CDC_Debuté = Rack6_cycle2EnCours
            v6.EDC_Debuté = Rack6_cycle3EnCours
            v6.CAE_Debuté = Rack6_cycle4EnCours
    
            v6.Mem_Acquisition = Acquistion6
    
            Writer6.Serialize(file6, v6)
            file6.Close()
            v6 = Nothing
    
            Button1.Enabled = True
            Button2.Enabled = True
            Button3.Enabled = True
            Button4.Enabled = True
            Button5.Enabled = True
            Button6.Enabled = True
            Button7.Enabled = True
            Button8.Enabled = True
            Button9.Enabled = True
            Button10.Enabled = True
            Button11.Enabled = True
            Button12.Enabled = True
            Button13.Enabled = True
            Button14.Enabled = True
            Button15.Enabled = True
            Button16.Enabled = True
            Button17.Enabled = True
            Button18.Enabled = True
    
          Catch ex As Exception
            MsgBox("NOM DE FICHIER INCORRECT", MsgBoxStyle.Exclamation)
          End Try
    
        Catch ex As Exception
          MsgBox(ex.Message, MsgBoxStyle.Exclamation, Me.Text)
        End Try
      End Sub
    
    lundi 26 septembre 2011 10:35
  • Non pas encore !

     

    lundi 26 septembre 2011 10:35
  • Bonjour ,

    Effectivement ca semble etre le cas !

    Mais comment faire ??

     

    Merci a vous.

    lundi 26 septembre 2011 10:37
  • Bonjour,

    vous devriez annuler la demande de fermeture temporairemen.

    Vous avez plusieurs solutuion :
    Pour faire simple vous devriez faire un flag dans une procédure quand cette procédure est fini dans ce cas la fermeture est possible.

    Pour faire "pas beau" voir ce dessous

    Private Sub Rack1_cycle1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    e.Cancel = True

    'Votre code ....

    End

    End Sub

    Sinon si votre procédure prend du temps pour pouvez vous servir du BackGroundWorker et là c'est vraiment propre :)


    Cordialement,
    Xavier TALOUR
    Alias Troxsa SendMail
    Voir le profil de Xavier TALOUR sur LinkedIn
    lundi 26 septembre 2011 11:06
    Auteur de réponse