mabue88
Goto Top

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:
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

Content-Key: 176555

Url: https://administrator.de/contentid/176555

Printed on: April 19, 2024 at 21:04 o'clock

Member: Blueberry
Blueberry Feb 06, 2012 at 17:35:17 (UTC)
Goto Top
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
Member: mabue88
mabue88 Jan 08, 2013 at 11:46:46 (UTC)
Goto Top
Ich bin gerade über diese Frage von mir gestoßen. Auch wenn sie schon älter ist, will ich noch was dazu schreiben.
Ich habe damals das Programm über mehrere Tage laufen lassen und dabei den Speicherbedarf aufgezeichnet. Dabei stellte sich heraus, dass der Speicherbedarf (laut Taskmanager) sehr schwankt, aber nicht ins Utopische steigt. Die aufgezeichneten Daten zeigen, dass der Speicherbedarf im Schnitt bei ca. 3 MB lagen. Daher habe ich das Programm nicht umgeschrieben.

Trotzdem vielen Dank!!!