[C#] Multithreading, Hintergrundmusik läuft nicht

[UDS]nachtfrost

Lieutenant
Dabei seit
März 2008
Beiträge
582
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:

bu1137

Captain
Dabei seit
Apr. 2010
Beiträge
3.249
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...
 

[UDS]nachtfrost

Lieutenant
Ersteller dieses Themas
Dabei seit
März 2008
Beiträge
582
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.
 

snow1

Lt. Junior Grade
Dabei seit
Juni 2005
Beiträge
295
Du musst den Thread auch starten (Methode .start())
 

bu1137

Captain
Dabei seit
Apr. 2010
Beiträge
3.249
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?
 

Mike Lowrey

Commodore
Dabei seit
Juni 2005
Beiträge
4.977
Ohne mehr Code wird man dir nicht anständig helfen können...
 

[UDS]nachtfrost

Lieutenant
Ersteller dieses Themas
Dabei seit
März 2008
Beiträge
582
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:
Top