Prozess im Task Manager macht nix mehr - wie aktivieren?
Geizhals » Forum » Programmierung » Prozess im Task Manager macht nix mehr - wie aktivieren? (5 Beiträge, 100 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
Prozess im Task Manager macht nix mehr - wie aktivieren?
05.05.2008, 10:09:41

Hi,

Ich verwende die C# API von einem Börseprogramm (TaipanRealtime von http://www.stoploss.de ) um aktuelle Börsenkurse in meinem C# Programm auszuwerten.

Die API stellt ein eigenes DataStream-Objekt zur Verfügung, an das man Events dranhängen kann. Diese Events werden bei Erreichen eines neuen Preises getriggered, und ich kann dann dort die Kurse verarbeiten und analysieren.

Im Task Manager kann ich feststellen, dass der Prozess bis zu 15% CPU Auslastung hat, also liegt hier alles im grünen Bereich.

ABER: Irgendwann werden keine Events mehr getriggered, obwohl neue Börsenkurse da wären. Der Prozess hat auf einmal 0% Auslastung - wie wenn die Verbindung abgerissen wäre. Aber das ist sie nicht. Weil wenn ich die GUI des Programmes aktiviere, kommt auf einmal dann auch der Prozess wieder zum Leben und liefert wieder Kurse bzw. triggert die Events.

Ich will aber nicht die ganze Zeit auf den Task Manager schauen und bei Bedarf die GUI aktivieren. Ich möchte das im Code machen bzw. das Problem überhaupt verhindern. Leider hab ich keine Ahnung, wie ich das machen könnte bzw. verhindern könnte.

Ich habe mir schon die Möglichkeiten im System.Diagnostic.Process Objekt angeschaut, habe aber dort nix gefunden.

WAS ICH BRÄUCHTE wäre eine Funktion, die mir den Prozess im Taskmanager (bei einer Inaktiviät länger als 3 Sekunden) einen Kick gibt, ihn aktiviert, ihn anstösst sozusagen. Hat da jemand eine Idee wie ich das machen könnte?

Am besten wäre natürlich die Ursache herauszufinden, warum der Prozess auf einmal scheintot ist - die Frage liegt aber schon seit längerem beim API Entwickler....

lg
flotschie



Antworten PM Übersicht Chronologisch
 
Melden nicht möglich
..
Re(2): Prozess im Task Manager macht nix mehr - wie aktivieren?
05.05.2008, 11:27:50
Hi Somnatic,

zuerst möchte ich dir für deine Antwort danken - du ahnst ja nicht, in wieviel Foren ich diese Frage schon gestellt habe! Du bist der Erste der mir was ordentliches antwortet! |-D

Ich habe es schon so ähnlich probiert, wie du vorgeschlagen hast. Ich habe mir noch zusätzlich alle (internen!) Threads dieses Prozesses rausgesucht. Dann habe ich einen Timecheck alle 3 Sekunden, der kontrolliert, ob die vorige Prozessorzeit über der jetzigen Prozessorzeit ist. Falls nein, wurde der Thread aussortiert.

Übrig bleibt dann der (interne!) Thread, der meiner Meinung nach verantwortlich ist für die Datenübertragungen. Um es nochmal klarzustellen: Das ist ein Thread, den ich über die ProcessThreadCollection des ursprungs Prozesses (also der, den man auch im Taskmanager sieht), bekommen habe.

So, und dieses Thread checke ich alle 3 Sekunden auf die Eigenschaft TotalProcessorTime()

Daran merke ich dann, ob er noch was macht oder nicht.

Also bis jetzt mach ichs eh so wie du vorgeschlagen hast.

Aber dieses "rausfinden, was da wirklich hängt" - keine Ahnung, wie ich das machen soll. Das geht dann sehr tief in die Materie glaub ich, hat was mit COM zu tun und stacks und was weiss ich, kenn ich mich net aus.

Und die 15% sind, weil diese Events zu tausenden pro Sekunde eintreffen, und jedes Event codemässig abgearbeitet wird - d.h. ein paar if Abfragen sind da schon dabei. Daher die 15%, das passt schon - er hat da schon etwas zu tun.









Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung