none
Application.DoEvents() in einer Klasse verwenden RRS feed

  • Frage

  • Hallo,

    ich habe mehrere Projekte die die selben Klassen verwenden. Jetzt möchte ich eine zentrale Projektmappe für diese Klassen einrichten. Nur, ich habe jetzt in derProjektmappe für die Klassen ein Problem mit Application.DoEvents(). Application liegt im Namespace System.Windows.Forms. Ebenso verwende ich in einer Klasse Application.StartupPath. Gut, den kann ich vom Forms-Programm der Klasse übergeben.

    Ich wie schaffe ich es in der Klasse ein Application.DoEvents() durchzuführen, dass sich im Grunde genommen auf das Forms-Programm auswirkt? 

    Gruss Klaus.


    KR

    Gerade stiess ich auf einen Thread der in einer ähnlichen Situation als mögliche Lösung von "callback mechanism (delegate)" sprach. Könnte mir jemand hier vielleicht ein Code-Beispiel für Application.DoEvents() zeigen?
    • Bearbeitet KlaRa1 Donnerstag, 21. April 2011 15:28 Ergänzung zum Thema
    Donnerstag, 21. April 2011 14:29

Antworten

  • Hallo Klaus,

    so ganz verstehe ich Dein Problem nicht.

    Application.DoEvents ist eine statische (shared) Methode, so dass Du sie an beliebiger Stelle aufrufen kannst.

    Du musst in Deinem Projekt nur einen Verweis auf die System.Windows.Forms.dll aufnehmen -
    sofern Du mit Projektmappe eine Klassenbibliothek meinst.

    Im allgemeinen sollte man die mit DoEvents jedoch sparsam umgehen.
    Aufgaben die die Benutzeroberfläche länger blockieren, sollten besser in einen Hintergrundthread
    verlegt werden, z. B. über einen BackgroundWorker.
    Was zudem den Vorteil hat, dass die heute oft vielen Kerne im Rechner mal was zu beissen kriegen ;-)

    Gruß Elmar

    • Als Antwort markiert KlaRa1 Samstag, 23. April 2011 19:40
    Freitag, 22. April 2011 10:22

Alle Antworten

  • Hallo Klaus,

    so ganz verstehe ich Dein Problem nicht.

    Application.DoEvents ist eine statische (shared) Methode, so dass Du sie an beliebiger Stelle aufrufen kannst.

    Du musst in Deinem Projekt nur einen Verweis auf die System.Windows.Forms.dll aufnehmen -
    sofern Du mit Projektmappe eine Klassenbibliothek meinst.

    Im allgemeinen sollte man die mit DoEvents jedoch sparsam umgehen.
    Aufgaben die die Benutzeroberfläche länger blockieren, sollten besser in einen Hintergrundthread
    verlegt werden, z. B. über einen BackgroundWorker.
    Was zudem den Vorteil hat, dass die heute oft vielen Kerne im Rechner mal was zu beissen kriegen ;-)

    Gruß Elmar

    • Als Antwort markiert KlaRa1 Samstag, 23. April 2011 19:40
    Freitag, 22. April 2011 10:22
  • Hallo Elmar,

    vielen Dank für die Antwort. Es musste der Verweis aufgenommen werden und in jeder betroffenen Programmdatei musste den Import Befehl aufgenommen werden. Die DLL kann ich jetzt erstellen.

    Der Source ist überwiegend in den Zeiten von VB.NET 2005 Express erstellt worden. Seiner Zeit konnte da unter den Express-Versionen, nicht so wie heute, mit Projektmappen gearbeitet werden. Zumindest gab es dann beim Debuggen Probleme. In dem Source der DLLs konnte nicht debuggt werden. Ich hoffe das ist jetzt vorbei. Zu diesem Test komme ich leider erst etwas später.

    Gruss Klaus.

     


    KR
    Samstag, 23. April 2011 19:39
  • Hallo Klaus,

    schön dass es nun läuft und mein blind gegebener Hinweis ausreichte.

    kleiner Tipp noch am Rande:
    Anstatt der Imports Anweisung je Quelldatei kannst Du das in Visual Basic auch global über das Projekt festlegen:
    Gewusst wie: Hinzufügen oder Entfernen von importierten Namespaces (Visual Basic)

    Gruß Elmar

    Samstag, 23. April 2011 19:55