C-Sharp - Speicherbedarf (Arbeitsspeicher) steigt waehrend Programm auf Eingabe wartet
Ich arbeite gerade an einem Programm, um waehrend der Arbeit verschiedene Daten schnell und einfach zu tracken. Um die Eingabe so schnell und so einfach wie moeglich zu machen, wird mit einer Tastenkombination eine Vorauswahl getroffen. Hierbei wird gleichzeitig geprueft, ob ein bestimmtes Fenster geoeffnet ist, da aus diesem Fenster dann ein String uebernommen wird. Prinzipiell funktioniert das Programm, aber der Speicherbedarf im Arbeitsspeicher steigt staendig weiter an. Und da das Programm eventuell mehrere Stunden laufen wird muss ich das verhindern. Hat jemand einen Tip, wie ich das verhindern kann?
Hier der entsprechende Code:
Danke
Hier der entsprechende Code:
int chars = 256;
StringBuilder buff = new Stringbuilder(chars);
string fenster;
int eingabe = 0;
IntPtr handle;
//Schleife so lange bis Eingabe getaetigt
while(eingabe == 0)
{
//Name von aktivem Programm ermitteln
handle = GetForegroundWindow();
GetWindowText(handle, buff, chars);
fenster = buff.ToString();
if(fenster.Contains("Internet Explorer"))
{
//Pruefen ob Shift gedrueckt ist
if(GetAsyncKeyState(Keys.ShiftKey))
{
//Pruefen ob F5 gedrueckt ist
if(GetAsyncKeyState(Keys.F5))
eingabe = 1;
//Pruefen ob F6 gedrueckt ist
else if(GetAsyncKeyState(Keys.F6))
eingabe = 2;
else
eingabe = 0;
}
}
System.Threading.Thread.Sleep(5);
}
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 176555
Url: https://administrator.de/contentid/176555
Ausgedruckt am: 26.11.2024 um 06:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo mabue88
Hast du schon mal geschaut, ob evtl. sich der StringBuilder voll laufen lässt?
Der StringBuilder verdoppelt sich ja ständig, wenn er Mal keinen Platz mehr hat... Ich würde Mal schauen, ob sich das Programm mit einem normalen String gleich verhält.
Btw. Registrier doch die Tasten und löse ein Event aus, wenn Shift + F5 oder Shift + F6 geklickt wurde, das würde dann die Prozessorlast sicherlich erleichtern und ein eventuelles Memoryleak in deiner Schlaufe kann so auch vermieden werden. Falls du nicht weisst wie, kann ich dir den Code sonst geben, schick mir einfach ne PN.
Gruss Blueberry
Hast du schon mal geschaut, ob evtl. sich der StringBuilder voll laufen lässt?
Der StringBuilder verdoppelt sich ja ständig, wenn er Mal keinen Platz mehr hat... Ich würde Mal schauen, ob sich das Programm mit einem normalen String gleich verhält.
Btw. Registrier doch die Tasten und löse ein Event aus, wenn Shift + F5 oder Shift + F6 geklickt wurde, das würde dann die Prozessorlast sicherlich erleichtern und ein eventuelles Memoryleak in deiner Schlaufe kann so auch vermieden werden. Falls du nicht weisst wie, kann ich dir den Code sonst geben, schick mir einfach ne PN.
Gruss Blueberry