In meiner App habe ich einen Thread, der für einige Zeit "Bitte warten" Dialogfeld anzeigt, manchmal ist es eine sehr kleine Menge Zeit und es gibt einige Störungen beim Zeichnen UI (ich denke)."Thread wurde abgebrochen" Ausnahme beim Anzeigen des Dialogs
Ich bekomme die Ausnahme "Thread wurde abgebrochen" und habe keine Ahnung, wie es loszuwerden. Ich meine, diese Ausnahme auf irgendeine Weise abfangen oder auf andere Weise vor dem Benutzer verbergen. Diese Ausnahme hat nichts mit dem Rest meiner App zu tun und dieser Fehler hat keinerlei Auswirkungen auf sie. Erscheint zufällig und es ist schwierig, bei einem Anruf neu zu erstellen.
Ich habe auf verschiedene Arten versucht, diese Ausnahme durch Code zu fangen, der Thread mit dem Dialogfenster startet und stoppt, aber es scheint, dass der Fehler anscheinend neben einem anderen Thread liegt, der das Fenster in meinem neu erstellten Thread anzeigt.
Hier ist ein Codebeispiel, Teil der statischen Klasse mit nützlichen Sachen, natürlich sage ich nicht, dass das ein guter Weg ist, um diese Art von "beschäftigt" Situation zu lösen, aber ich möchte dieses Problem lösen. Thread.Sleep (500); oder andere Try/Catch-Verbesserungen helfen mir nicht, diese Thread-Ausnahme zu vermeiden.
public static bool alreadyBusy = false;
public static BusyIndicator bi = new BusyIndicator("");
public static Thread backgroundOpertionThread;
public static void showBusy(bool isBusy, System.Windows.Forms.Form hostform, string message)
{
Common.busyMessage = message;
if (isBusy)
{
Common.alreadyBusy = true;
backgroundOpertionThread = new Thread(new ThreadStart(showBusy));
Thread.Sleep(500);
if (hostform != null)
{
hostform.Enabled = false;
hostform.SuspendLayout();
}
backgroundOpertionThread.Start();
}
else
{
backgroundOpertionThread.Abort();
Thread.Sleep(500);
Common.alreadyBusy = false;
if (hostform != null)
{
hostform.Enabled = true;
hostform.ResumeLayout();
}
}
}
public static void showBusy()
{
BusyIndicator bir = new BusyIndicator(Common.busyMessage);
bir.ShowDialog();
}
Irgendwelche Ideen?
Können Sie Ihre Frage mit einem Codebeispiel aktualisieren? – jezell