Angenommen, ich habe normalen button.Click
Ereignis.Warum wird der UI-Thread blockiert, wenn etwas in einem anderen Thread ausgeführt wird?
Wenn ich versuche, innerhalb dieses Ereignisses auf UI-Elemente zuzugreifen, könnte ich möglicherweise unerwünschtes Verhalten bekommen - oder sogar eine Ausnahme (beim Debuggen). Die übliche Ausnahme in einem solchen Szenario ist: ...cannot access UI elements from thread different than they were created in
.
Da dies ein anderer Thread (anders als die Haupt) ist, warum meine Benutzeroberfläche blockiert ist, wenn ich zeitraubende Operationen in einem Ereignis durchführen?
Wie können Sie feststellen, dass einige Ereignisse im UI-Thread und andere nicht ausgeführt werden? – pkolodziej
Durch Lesen der Dokumentation für das Ereignis. Die meisten mit der Benutzeroberfläche verknüpften Ereignisse werden im UI-Thread ausgelöst. Wenn Sie sich nicht sicher sind, überprüfen Sie InvokeRequired. –
Wenn das Ereignis im Thread anders als UI ausgelöst wird, verhindert es nicht, dass das Fenster aktualisiert wird, aber wenn es im UI-Thread ausgelöst wird, wird das Fenster nicht neu gezeichnet, bis das Ereignis schließt. – pkolodziej