Hallo,
nach langer Zeit bin ich mal wieder hier mit einem Problem. Ich habe eine Funktion
Testweise hab ich den Funktionsaufruf im Main in einer while(true) schleife.
Spoiler anzeigen
Eventuell kann mir ja einer von euch erklären, wieso sich der Speicher bei jedem Funktionsaufruf erhöht, danke!
LG Quellcoder
nach langer Zeit bin ich mal wieder hier mit einem Problem. Ich habe eine Funktion
playSound(string soundNum)
die einfach aus einem dictionary mit dem übergebenen Key einen Stream zum abspielen rausholt. Die .wav Dateien sind als Ressourcen in das Projekt eingebunden. Das funktioniert auch ziemlich, nur wird jedes mal wenn diese Funktion aufgerufen wird, der Prozessspeicher erhöt, und das stört mich. Irgendetwas muss ich grundlegend falsch verstanden haben, weil auch nach ende der Methode sterben die Objekte darin nicht richtig. Wenn ich z.b. am ende ein s.Dispose()
hab, bekomm ich beim nächsten mal aufrufen der Funktion mit gleichem Stream ein System.ObjectDisposedException
obwohl der stream neu gesetzt wird. Testweise hab ich den Funktionsaufruf im Main in einer while(true) schleife.
C#-Quellcode
- static void Main(string[] args) {
- while(true){
- playSound("1");
- }
- }
- public static void playSound(string soundNum) {
- SoundPlayer player = new SoundPlayer();
- Stream s = null;
- try { soundDic.TryGetValue(Int16.Parse(soundNum), out s); } catch(Exception e) { Console.WriteLine(e.GetType().ToString() + ": Can't find Sound!"); }
- player.Stream = s;
- s.Position = 0;
- if(!s.Equals(null)) { player.Play(); } else { SystemSounds.Asterisk.Play(); }
- Thread.Sleep(5000);
- player.Dispose();
- s.Dispose();
- }
Eventuell kann mir ja einer von euch erklären, wieso sich der Speicher bei jedem Funktionsaufruf erhöht, danke!
LG Quellcoder
Projekte