none
Probleme mit externem Programm RRS feed

  • Frage

  • Hallo,

    aus unserer Software heraus wird ein externes Programm gestartet. Da der Vorgang etwas zu lange dauert und das Programm öfter aufgerufen werden muss, soll es zwischendurch nicht neu gestartet werden, sondern mit seinem Handle über SetForegroundWindow und ShowWindow nur wieder sichtbar gemacht werden (funktioniert problemlos).

    Der Start erfolgt als New Process und p.Start() mit New ProcessStartInfo(dmpDir & "\d-doc.exe", "impbdt c:\temp\dmpdat.txt")

    Wenn in der Oberfläche von d-doc zwischenzeitlich nicht mehr gearbeitet wird und wir wieder zurück zu unserer Software wechseln, haben wir das Problem, dass diese nun sehr verzögert reagiert, d.h. sehr langsam läuft. d-doc scheint sich viele Resourcen und Speicher zu klauen. Wäre es eine gute Idee, das Programmfenster zu minimieren und dabei den Fuß vom Gaspedal zu nehmen (sprich die CPU-Nutzung runter zu drehen) und beim ShowWindow wieder zu erhöhen? Leider finde ich im Netz keinen Beispielcode für dieses Unterfangen, sonst hätte ich es schon ausprobiert. Vielleicht findet jemand Zeit, mir einen Rat zu geben?

    Viele Grüße Norbert

    Freitag, 22. November 2019 10:39

Antworten

  • Hallo Norbert,

    Wenn Du auf die Startschaltfläche Deiner Anwendung klickst, wird der Code in dieser Schaltfläche so schnell wie möglich nacheinander ausgeführt. Zwischen den einzelnen Codezeilen ist keine steuerbare Verzögerung eingebaut. Der Code wird bereits so schnell wie möglich ausgeführt. Da Du die physische Begrenzung der Prozessorgeschwindigkeit nicht ändern kannst und dieser Code bereits so schnell wie möglich sequenziell ausgeführt wird, gibt es nicht viel zu erhöhen. Du kannst die Geschwindigkeit steuern, indem Du die Verzögerung oder das Intervall steuerst, in dem der Code ausgeführt wird. Wenn Du versuchst, die Leistung mit Hilfe von "Doublebuffering", "Threading", "Multitasking" usw. zu ändern, sie sind für das, wonach Du fragst, kaum zweckmässig. Dieses Thema wird im folgenden Thread behandelt:
    Speed Up Process

    Gruß,

    Ivan Dragov


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    • Als Antwort markiert norbert3 Donnerstag, 28. November 2019 17:17
    Mittwoch, 27. November 2019 09:00
    Moderator
  • Hallo Norbert,

    ggfs. hilft es, die PriorityClass des Prozesses zu ändern.

      https://docs.microsoft.com/de-de/dotnet/api/system.diagnostics.process.priorityclass?view=netframework-4.8


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    • Als Antwort markiert norbert3 Donnerstag, 28. November 2019 17:17
    Mittwoch, 27. November 2019 09:17
    Moderator

Alle Antworten

  • Hallo Norbert,

    Wenn Du auf die Startschaltfläche Deiner Anwendung klickst, wird der Code in dieser Schaltfläche so schnell wie möglich nacheinander ausgeführt. Zwischen den einzelnen Codezeilen ist keine steuerbare Verzögerung eingebaut. Der Code wird bereits so schnell wie möglich ausgeführt. Da Du die physische Begrenzung der Prozessorgeschwindigkeit nicht ändern kannst und dieser Code bereits so schnell wie möglich sequenziell ausgeführt wird, gibt es nicht viel zu erhöhen. Du kannst die Geschwindigkeit steuern, indem Du die Verzögerung oder das Intervall steuerst, in dem der Code ausgeführt wird. Wenn Du versuchst, die Leistung mit Hilfe von "Doublebuffering", "Threading", "Multitasking" usw. zu ändern, sie sind für das, wonach Du fragst, kaum zweckmässig. Dieses Thema wird im folgenden Thread behandelt:
    Speed Up Process

    Gruß,

    Ivan Dragov


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    • Als Antwort markiert norbert3 Donnerstag, 28. November 2019 17:17
    Mittwoch, 27. November 2019 09:00
    Moderator
  • Hallo Norbert,

    ggfs. hilft es, die PriorityClass des Prozesses zu ändern.

      https://docs.microsoft.com/de-de/dotnet/api/system.diagnostics.process.priorityclass?view=netframework-4.8


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    • Als Antwort markiert norbert3 Donnerstag, 28. November 2019 17:17
    Mittwoch, 27. November 2019 09:17
    Moderator
  • Vielen Dank! Muss mich mit den Antworten erstmal zufrieden geben und markiere sie auch als Lösung. Mir ist völlig klar, dass das Problem rechnerspezifisch ist und ihr wohl von "draussen" keine konkrete Lösung finden könnt.

    Wenn ich bei dem Vorgang im TaskManager die CPU Auslastung und den Speicher beobachte, kann ich nichts  erkennen. CPU kleckert für das externe Programme bei 4 % und Speicher bei 25 MB. Völlig unklar, warum da mein Hauptprogramm so zäh reagiert.

    Viele Grüße Norbert

    Donnerstag, 28. November 2019 17:17