Probleme mit Application.DoEvents

21/10/2007 - 10:15 von andi rickenbach | Report spam
Hallo,

habe schwerwiegende Probleme mit meiner Applikation. In einer For-Schleife
importiere ich Daten. Die Anzahl imports wird in einem ProgressFormular
angezeigt. Damit sich das formular wàhrend dem Import sauber aktualisiert,
muss das DoEvents in die Schleife. Genau da aber kommt manchmal eine
Exception. Die Exception kommt nie am gleichen ort und zur gleichen Zeit. Ich
kann der gleiche Import mehrere male machen. Manchmal kommt die Meldung
nicht, manchmal nach zwei Eintràgen, manchmal nach tausend Eintràgen, ganz
unterschiedlich. Was könnte das sein?

Code sieht etwa so aus...
For Each tn As TreeNode In TreeNodes
Application.DoEvents()
If m_frmProgress.Abort = True Then
Exit Sub
End If
m_frmProgress.UpdateProgressBar()
...
Next tn

Fehlermeldung:
Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies
ist hàufig ein Hinweis darauf, dass anderer Speicher beschàdigt ist.;
InternalStackTrace: bei
System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
bei
System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32
dwComponentID, Int32 reason, Int32 pvLoopData)
bei
System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32
reason, ApplicationContext context)
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32
reason, ApplicationContext context)
bei System.Windows.Forms.Application.DoEvents()

Danke
 

Lesen sie die antworten

#1 VBF
21/10/2007 - 17:01 | Warnen spam
Die Fehlermeldung sagt eigentlich ziemlich genau was passiert: Es wird
versucht auf einen bestimmten Speicherort zuzugreifen, der allerdings
geschützt ist. Wahrscheinlich ist dieser gerade verwendet, oder es wird auf
diesen geschrieben. Dieser Speicherplatz steht für dein Control.
Ich kann Dir leider keine Behebung per Code zukommen lassen. Vielleicht hat
jemand anderes eine Idee. Versuche einfach einmal eine neuere Version des
.Net Frameworks zu verwenden. Die CLR scheint nicht mit der
Speicherverwaltung klar zu kommen bzw. nicht sicher genug, denn der Fehler
tritt manchmal gar nicht auf.

"andi rickenbach" wrote:

Hallo,

habe schwerwiegende Probleme mit meiner Applikation. In einer For-Schleife
importiere ich Daten. Die Anzahl imports wird in einem ProgressFormular
angezeigt. Damit sich das formular wàhrend dem Import sauber aktualisiert,
muss das DoEvents in die Schleife. Genau da aber kommt manchmal eine
Exception. Die Exception kommt nie am gleichen ort und zur gleichen Zeit. Ich
kann der gleiche Import mehrere male machen. Manchmal kommt die Meldung
nicht, manchmal nach zwei Eintràgen, manchmal nach tausend Eintràgen, ganz
unterschiedlich. Was könnte das sein?

Code sieht etwa so aus...
For Each tn As TreeNode In TreeNodes
Application.DoEvents()
If m_frmProgress.Abort = True Then
Exit Sub
End If
m_frmProgress.UpdateProgressBar()
...
Next tn

Fehlermeldung:
Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies
ist hàufig ein Hinweis darauf, dass anderer Speicher beschàdigt ist.;
InternalStackTrace: bei
System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
bei
System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32
dwComponentID, Int32 reason, Int32 pvLoopData)
bei
System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32
reason, ApplicationContext context)
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32
reason, ApplicationContext context)
bei System.Windows.Forms.Application.DoEvents()

Danke

Ähnliche fragen