Wenn du das in eigene Threads packst wird es kompliziert,
ermöglicht aber ein Blockierungsfreies Arbeiten.
Was bei .Net Anwendungen wichtig ist, dass GUI Controls nur von dem
Thread modifiziert, aktualisiert und gezeichnet werden die dieses
Control auch erstellt haben (Bedeutet, den Konstruktor aufgerufen)
Dein Thread für die Gui darf sich deshalb nicht beenden.
Wenn du einen eigenen Thread für die GUI nimmst, darfst du den nur mit
sleep schlafen lassen. Mit Application.DoEvents kannst du dann den
GUIThread die Events bearbeiten lassen.
eine Typische Schleife für die GUI würde so aussehen:
1 | Form1 frm = new Form1();
|
2 | frm.show();
|
3 | while(!exit){
|
4 | Application.DoEvents();
|
5 | System.Threading.Thread.sleep(10);
|
6 | }
|
Einfacher ist es, ein Standard Projekt mit Form zu machen und für deinen
Netzwerkcode ein eigenen Thread zu erstellen.
Bei den Timerevents bin ich mir nicht sicher, aber wenn ich mich richtig
erinnere werden die Timer events in dem Thread bearbeitet in dem der
Timer auch erstellt wurde. Solange der Thread im Timerevent ist, ist
dieser Thread blockiert und kann keine GUI events ausführen.
Aus dem Fremden Thread kannst du mit der invoke Funktion Funktionen mit
dem GUI Thread aufrufen.
Viele Grü?e