Hallo zusammen,
ich bin relativ neu in der C#-Welt und habe nun folgendes Problem: in der Main-Methode erzeuge ich in einer globalen Variabel meine Haupt-Form MainApp und rufe sie auf. Weiterhin initialisiere ich in der Main-Methode auch einige SOAP-Services und MSMQ-Messaging. Beim eintreffen einer neuen Nachricht soll nun auf dem TabControl im MainApp erstellt werden. Hierfür habe ich mir eine kleine Methode in der MainApp.cs geschrieben die auch wunderbar funktioniert wenn ich sie durch einen Button-Klick oder ähnlichem aufrufe. Beim Aufruf aus der Programm.cs funktioniert sie leider nicht. Es ist, als ob sich die Referenz auf meine MainApp ändern würde oderso... kan mir jmd. einen Tipp geben, woran es liegen könnte?
Hier noch der wichtigste Code:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| static class Program { static MainApp mainApp;
static void Main() { Application.ApplicationExit += new EventHandler(OnApplicationExit); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); [...]
mainApp = new MainApp(); mainApp.addNewTab("Test");
Application.Run( mainApp ); }
public static void newMessage(String msg) { mainApp.addNewTab(msg); } } |
Vielen Dank schonmal für eure Hilfe!
Edit:
ich habe mein mainApp.addNewTab jetzt in try/catch gesetzt und es kommt tatsächlich folgende Fehlermeldung:
Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement tabControlMsgs erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde.
bin aber absolut ratlos, wie ich das beheben kann...