Ich habe eine Winforms-Anwendung, das Problem hat mit Threading zu tun. Da ich 'MyCustomCode() aufrufen, die einen neuen Thread erstellt, und ruft die Methode ' SomeMethod() 'auf, die dann auf MessageBox.Show (...) zugreift.Winforms Threading-Problem, zweiter Thread kann nicht zugreifen 1. Hauptformulare steuert
Das Problem hat mit Threading zu tun, da der neu erstellte Thread versucht, auf ein Steuerelement zuzugreifen, das in einem anderen Thread erstellt wurde.
Ich erhalte die Fehlermeldung:
Cross-Thread-Betrieb nicht gültig: Control ‚Testform‘ von einem Thread zugegriffen andere als das Gewinde der es erstellt wurde.
public TestForm()
{
InitializeComponent();
// custom code
//
MyCustomCode();
}
public void SomeMethod()
{
// ***** This causes an error ****
MessageBox.Show(this,
ex.Message,
"Error",
MessageBoxButtons.OK,
MessageBoxIcon.Error
);
}
private void InitializeAutoUpdater()
{
// Seperate thread is spun to keep polling for updates
ThreadStart ts = new ThreadStart(SomeMethod);
pollThread = new Thread(ts);
pollThread.Start();
}
aktualisieren
Wenn Sie an diesem Beispiel http://www.codeproject.com/KB/cs/vanillaupdaterblock.aspx aussehen, wird die Methode CheckAndUpdate Aufruf MessageBox.Show (..) das ist, was mein Problem ist. Ich hätte gedacht, dass Code gut ist, um zu gehen!
Lustige Sache ist, dass dieser Code am Freitag gut lief ???
könnte es sein, weil ich .net 3.5 installiert? Ist das ein 3,5 "Feature"? Ich bezweifle es, aber es ist die einzige Erklärung! –
(Ich habe es kürzlich installiert ..) –