Modalen Dialog von externem Thread schließen - C #

9

Ich habe Probleme, einen Weg zu finden, um mit C # die Forms-Funktionalität zu erstellen, die ich verwenden möchte.

Grundsätzlich möchte ich ein modales Dialogfeld mit einer bestimmten Zeitüberschreitung haben. Es scheint, als ob dies leicht zu tun sein sollte, aber ich kann es nicht funktionieren lassen.

Sobald ich this.ShowDialog(parent) aufgerufen habe, stoppt der Programmfluss und ich kann den Dialog nicht mehr schließen, ohne dass der Benutzer zuerst auf eine Schaltfläche klickt.

Ich habe versucht, einen neuen Thread mit der BackgroundWorker-Klasse zu erstellen, aber ich kann nicht erreichen, dass der Dialog in einem anderen Thread geschlossen wird.

Vermisse ich hier etwas Offensichtliches?

Vielen Dank für Ihre Informationen.

    
Tim 17.06.2009, 22:52
quelle

4 Antworten

11

Verwenden Sie einen System.Windows.Forms.Timer . Legen Sie die Eigenschaft Interval als Zeitlimit fest, und geben Sie Aktivieren Sie den Event-Handler, um den Dialog zu schließen.

%Vor%

Der Timer wird im Benutzeroberflächen-Thread ausgeführt, sodass das Formular über den Tick-Ereignishandler sicher geschlossen werden kann.

    
adrianbanks 17.06.2009, 23:12
quelle
11

Sie müssen die Close-Methode für den Thread aufrufen, der das Formular erstellt hat:

%Vor%     
Fredrik Mörk 17.06.2009 22:55
quelle
3

Wenn Sie wirklich nur einen modalen Dialog wollen, dann fand ich das bei weitem die beste Lösung: Ссылка (lesen Sie den Kommentar für eine kleine Änderung).

Wenn Sie Ihre eigene Form modal anzeigen möchten, dann ist die Lösung von adrianbanks am besten.

    
Tom Chantler 22.09.2010 15:03
quelle
1

Sie können das Schließen von Ihrem Hintergrund-Thread

aufrufen     
Sam Saffron 17.06.2009 22:54
quelle

Tags und Links