[C#] Multithreading, Hintergrundmusik läuft nicht

nachtfrost23

Lieutenant
Registriert
März 2008
Beiträge
644
Hey, ich habe versucht, mittels Multithreading bei einem Spiel Musik im Hintergrund laufen zu lassen. In der Schule hat mein Info-Lehrer mir das genau so wie ich es habe erklärt (glaube ich ;) ), aber leider funktioniert es nicht.
Ich habe das eigentliche Spiel in einen eigenen Thread "ausgelagert" und die Musik soll im Haupthread laufen. So, meinte zumindest mein Lehrer, müsste das funktionieren.

Hier der Code:
Code:
using System;
using System.Runtime.InteropServices;
using System.Threading;

namespace Spiel
{
	class Program
	{
		[DllImport ("winmm.dll")]
		private static extern long PlaySound(String lpszName, IntPtr hModule, Int32 dwFlags);
		
		public static void Main(string[] args)
		{
			Spiel spiel = new Spiel();
			
			ThreadStart del=new ThreadStart(spiel.spielen);
			Thread Spiel=new Thread(del);
			Spiel.Start();
			
			PlaySound("musik.wav",(IntPtr) 0,0);
			
			Console.WriteLine("Sie haben verloren");
			
			Console.Write("Drücken Sie Escape zum Beenden.");
			ConsoleKeyInfo a;
			do
			{a=Console.ReadKey(true);}
			while(a.Key!=ConsoleKey.Escape);
			
		}
		
	}

Ich hoffe ihr findet meinen Fehler und wisst ihn zu berichtigen.
Gruß, nachtfrost

Komplettes Programm im Anhang. OHNE MUSIK!
 
Zuletzt bearbeitet:
Ich schätze mal es hängt bei "spiel.spielen();", das wolltest du doch eigentlich im separaten Thread laufen lassen, wie man weiter unten sieht...
 
Ups, das hätte es tatsächlich sein können, aber ich habe das jetzt reausgenommen und jetzt startet das Spiel auch nicht mehr, und Musik kommt auch nicht.
 
Du musst den Thread auch starten (Methode .start())
 
Naja, du startest den Thread ja auch gar nicht, zumindest nicht in dem Codeabschnitt. Und was du da genau mit Playsound machst, ist mir ja auch nicht ganz klar. Als Dateiname übergibst du eine DLL?
 
Ohne mehr Code wird man dir nicht anständig helfen können...
 
Ich hab den Spoiler mal etwas erweitert und das gesamte Programm angehängt.
In der Rar-Datei fehlt aber das Lied, da dieses zu groß ist! Man kann eine beliebige Wavedatei mit dem Namen Musik.wav im Unterordner bin\Debug platzieren um diese zu ersetzen.

Und ich habe "Musik.dll" in "Musik.wav" geändert, da dies natürlich auch nicht funktionieren konnte.

Wie starte ich den Thread denn richtig?
Ergänzung ()

Ich habs :)
Nur kommt jetzt natürlich nach dem Ende des Liedes "Sie haben verloren..."
Wie kann ich das Lied auf repeat stellen?

Vielen Dank, mal an alle hier!
 
Zuletzt bearbeitet:
Zurück
Oben