Entwickler-Ecke

WinForms - Form aufrufen, Main weiterlaufen


Nahameth - Mi 10.03.10 15:52
Titel: Form aufrufen, Main weiterlaufen
Hallo, bin neu hier und auch neu in C#. Sorry falls dies das falsche Forum ist. bin mir nicht sicher.

habe ein Programm mit einer "Form1" und einem Code "Program.cs" in dem das Main steht. Ich will die Form aufrufen und dann soll das Main aber weiter arbeiten. Mit
Application.Run(new Form1());

hält die Main aber dann an. Was mache ich falsch. In dem "Program.cs" läuft ein Thread der Bilder aus einem Framegrabber holt und in einem Window darstellt. Die Form soll unabhängig davon offen sein und einige Daten anzeigen bzw. das Window steuern.


Ralf Jansen - Mi 10.03.10 16:16

Das macht keinen Sinn. Application.Run startet die MessagePump und ist im Prinzip der Kern deiner Anwendung. Wenn du etwas während des Programmlaufs tun möchtest (und nicht initial oder abschließend) gehört es in die Abhängigkeit des Contextes mit dem du Application.Run aufrufst. Hier ist Form1 der Context also mußt du deinen Thread von Form1 aus oder einer Abhängigkeit von Form1 aus starten(und verwalten).


Nahameth - Do 11.03.10 08:14

user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
Das macht keinen Sinn. Application.Run startet die MessagePump und ist im Prinzip der Kern deiner Anwendung. Wenn du etwas während des Programmlaufs tun möchtest (und nicht initial oder abschließend) gehört es in die Abhängigkeit des Contextes mit dem du Application.Run aufrufst. Hier ist Form1 der Context also mußt du deinen Thread von Form1 aus oder einer Abhängigkeit von Form1 aus starten(und verwalten).


Danke Rolf.

Hab' jetzt 2 Threads gestartet. Einen für das Darstellungsfenster und einen für das Steuerfenster (Form1). Das hat auch funktioniert. Werde jetzt noch mal deinen Vorschlag probieren.


JasonDelife - Do 11.03.10 18:20

Kann böse enden. Generell sollten ALLE Fenster und Controls in EINEM einzigen Thread laufen. Die anderen Threads sollten dann arbeiten verrichten und den GUI-Thread per BeginInvoke() benachrichtigen.

Grüße, JasonDelife.