The Artima Developer Community
Sponsored Link

.NET Buzz Forum
Meine GUI friert w��hrend der Ausf��hrung ein, was tun?

0 replies on 1 page.

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 0 replies on 1 page
-

Posts: 1524
Nickname: nitronic
Registered: Jul, 2006

Norbert Eder works as a software architect.
Meine GUI friert w��hrend der Ausf��hrung ein, was tun? Posted: Dec 4, 2006 11:50 AM
Reply to this message Reply

This post originated from an RSS feed registered with .NET Buzz by -.
Original Post: Meine GUI friert w��hrend der Ausf��hrung ein, was tun?
Feed Title: Norbert Eder - Living .NET
Feed URL: http://feeds.feedburner.com/NorbertEder-Livingnet
Feed Description: Copyright (c)2005, 2006 by Norbert Eder
Latest .NET Buzz Posts
Latest .NET Buzz Posts by -
Latest Posts From Norbert Eder - Living .NET

Advertisement
Ebenfalls eine oft gesehene Frage. Eine Aufgabe wird gerade ausgef��hrt und dabei friert die Oberfl��che der Anwendung ein. Weder ein Fortschrittsbalken wird aktualisiert, noch ein Label, das den Fortschritt anzeigt. Ja selbst beim Verschieben der Form wird diese wei�� und zeigt keine Informationen mehr an.

Der Hintergrund liegt einfach daran, dass durch eine ausgef��hrte Arbeit von dieser Form keine System-Message mehr angenommen wird bzw. diese nicht verarbeitet werden kann. Um dies zu vermeiden (und damit der Benutzer nicht irrt��mlich annimmt, die Anwendung sei abgest��rzt), bieten sich mehrere L��sungen an:

DoEvents
Durch ein Application.DoEvents() erh��lt die Anwendung die M��glichkeit, andere Events abzuhandeln und die Form neu zu zeichnen.

Threading
Aufw��ndige Aufgaben sollten in einem eigenen Thread ausgef��hrt werden. Dies kann ��ber die Klassen des Namespaces System.Threading geschehen oder ��ber einen BackgroundWorker. Hier ist jedoch zu beachten, dass von Threads nicht direkt auf die GUI-Elemente zugegriffen werden kann. Hierzu muss mit Invoke gearbeitet werden.

Wichtig: Locking
In manchen F��llen ist es wichtig, bestimmte Code-Teile mit einem lock (oder anderen entsprechenden Blockierungs-Ma��nahmen) zu versehen. Dadurch kann der gleiche Code nur von einem einzigen Thread aufgerufen und ausgef��hrt werden. Dies kann mit einem DoEvents nicht ausreichend gel��st werden. In solchen F��llen sollte auf jeden Fall Threading verwendet werden.

Read: Meine GUI friert w��hrend der Ausf��hrung ein, was tun?

Topic: Using attributes to specify the contents of a menu Previous Topic   Next Topic Topic: Vista RTM

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use