langsam bin ich überlastet ...Anwendung friert außerhalb von Visual Studio ein. Beim Starten von Visual Studio funktioniert es
Ich habe eine große Anwendung mit Threading, Timer, aufrufen (nicht BeginInvoke, so ist es synchron) und Application.DoEvents.
Es ist zu viel hier zu posten und ich weiß nicht, wo das Problem wirklich ist.
Jede Methode von mir ist in einem Versuch zu fangen. Jeder Fang wird protokolliert.
Wenn ich meine Anwendung von Visual Studio (F5) oder während der Profilerstellung über Ants starte, gibt es kein Problem. Die Anwendung läuft seit einigen Tagen. Aber sobald ich die gleiche Debug-Version über Windows Explorer starte, friert es alle paar Stunden ein. Es friert ohne Ausnahme oder so. Wenn ich Visual Studio an diese Anwendung anschließe und sie aufbringe, stoppt sie bei Application.Run (new Form1());
Ich bin wirklich verwirrt und habe keine Idee, es zu reparieren.
Es ist eine .net 3.5 WinForms-Anwendung
Es sieht aus wie ein Thread hier hängt:
if (grabber.InvokeRequired)
{
Console.WriteLine("grabber.InvokeRequired");
this.Invoke((MethodInvoker) delegate { grabber.Navigate("http://www.google.de"); }); // <-- hang
}
else
{
grabber.Navigate(ig.StartUrl);
}
dieser Ausschnitt ist Teil eines Timer-Ereignis
_timeout = new System.Timers.Timer(10000);
_timeout.Elapsed += new ElapsedEventHandler(OnWatchDogBark);
bearbeiten
Ein Beispiel für DoEvents(). Dies ist in einem Schloss() und in einem invoke
grabber.DocumentCompleted -= grabber_DocumentCompleted;
grabber.Navigate("http://www.google.de");
while (grabber.ReadyState != WebBrowserReadyState.Complete)
{
timeout--;
Application.DoEvents();
Thread.Sleep(200);
if (timeout < 0)
{
timeout = 50;
grabber.Navigate("http://www.google.de");
}
}
Derzeit ich die System.Windows.Forms.Timer und einige Schlösser verwenden, aber es ist keine Besserung.
Okay, habe ich WinDbg einige Informationen
bearbeiten zu erhalten:! 14.06.2012
Themen
PreEmptive GC Alloc Lock
ID OSID ThreadOBJ State GC Context Domain Count APT Exception
0 1 37ec 007cab18 6020 Enabled 00000000:00000000 007c8510 0 STA System.ArgumentException (02762ba8)
2 2 85b8 007d7c38 b220 Enabled 00000000:00000000 007c8510 0 MTA (Finalizer)
XXXX 3 0 06e9f548 9820 Enabled 00000000:00000000 007c8510 0 Ukn
21 5 3464 0d6dc598 200b020 Enabled 28cb5820:28cb5fe8 007c8510 0 MTA
22 6 62b0 0d6db9e0 200b220 Enabled 00000000:00000000 007c8510 0 MTA
23 7 8e58 0d6db5f8 80a220 Enabled 00000000:00000000 007c8510 0 MTA (Threadpool Completion Port)
XXXX 4 0 06f62d40 1801820 Enabled 00000000:00000000 007c8510 0 Ukn (Threadpool Worker)
XXXX f 0 132a3290 1801820 Enabled 00000000:00000000 007c8510 0 Ukn (Threadpool Worker)
XXXX 10 0 132a3678 1801820 Enabled 00000000:00000000 007c8510 0 Ukn (Threadpool Worker)
XXXX e 0 132a26d8 1801820 Enabled 00000000:00000000 007c8510 0 Ukn (Threadpool Worker)
XXXX 9 0 0d6db210 1801820 Enabled 00000000:00000000 007c8510 0 Ukn (Threadpool Worker)
DLK
Examining SyncBlocks...
Scanning for ReaderWriterLock instances...
Scanning for holders of ReaderWriterLock locks...
Scanning for ReaderWriterLockSlim instances...
Scanning for holders of ReaderWriterLockSlim locks...
Examining CriticalSections...
Could not find symbol ntdll!RtlCriticalSectionList.
No deadlocks detected.
Sie haben eine Sackgasse an Ihren Händen. Diese sind jedoch schwer zu diagnostizieren. – zmbq
kann Speicherlecks sein, so dass es nicht genügend Speicher hat [Speicherleck in cis] (http://stackoverflow.com/questions/620733/memory-leak-in-c-sharp), [how-to-detect-memory -leaks in-c-sharp-Anwendung] (http://stackoverflow.com/questions/2259433/how-to-detect-memory-leaks-in-c-sharp-application)? – PresleyDias
Yup, würde dasselbe wie zmbq sagen. Wird es von der IDE aus ausgeführt, verlangsamt es sich enorm, so dass Sperren aus Nebenläufigkeit mit geringerer Wahrscheinlichkeit auftreten. –