invoke ui thread

23/03/2008 - 17:33 von Sebastian K | Report spam
Wieso funktioniert das so nicht? Bis zum invoke ist alles in Ordnung,
der nàchste MessageBox("end invoke") wird nicht mehr angezeigt. WIeso
blockert Invoke an der Stelle?



private void OnDataReceived(String[] data) {
if (InvokeRequired) {
System.Windows.Forms.MessageBox.Show("first: " + (String)data[0]);
Invoke(new DataDelegator(OnDataReceived), data);
System.Windows.Forms.MessageBox.Show("end invoke");
return;
}
System.Windows.Forms.MessageBox.Show("hier");
}
 

Lesen sie die antworten

#1 Herfried K. Wagner [MVP]
23/03/2008 - 19:08 | Warnen spam
"Sebastian K" schrieb:
Wieso funktioniert das so nicht? Bis zum invoke ist alles in Ordnung, der
nàchste MessageBox("end invoke") wird nicht mehr angezeigt. WIeso blockert
Invoke an der Stelle?

private void OnDataReceived(String[] data) {
if (InvokeRequired) {
System.Windows.Forms.MessageBox.Show("first: " + (String)data[0]);
Invoke(new DataDelegator(OnDataReceived), data);
System.Windows.Forms.MessageBox.Show("end invoke");
return;
}
System.Windows.Forms.MessageBox.Show("hier");
}



'Invoke' blockiert, bis die Arbeit in der aufgerufenen Methode erledigt ist.
Du suchst nach 'BeginInvoke' anstelle von 'Invoke'.

M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>

Ähnliche fragen