Jag använder en tråd för att spela upp ljud, men första gången tråden används i applikationen så blir det en fördröjning på 1-2 seckunder. Därefter så spelas ljuden upp då de ska!
Vet inte riktigt vad det kan vara som gör detta!
//deklaration
[DllImport("winmm.dll")]
public static extern long PlaySound(String lpszName, long hModule, long dwFlags);
private Thread hitThread = null;
//funktioner för att spela upp ljudet i tråden
public void PlaySoundInThread(string wavefile)
{
m_strCurrentSoundFile = wavefile;
hitThread = new Thread(new ThreadStart(PlayASound));
hitThread.Start();
}
public void PlayASound()
{
if (m_strCurrentSoundFile.Length > 0)
{
PlaySound(Application.StartupPath + "\\" + m_strCurrentSoundFile, 0, 0);
}
m_strCurrentSoundFile = "";
hitThread.Abort();
}
//kallar på funktionen med filnamn
PlaySoundInThread("ball.wav");
Det här är väl lite .NET i ett nötskal? Allt tar tid första gången man gör det eftersom metoderna kompileras i takt med att de används (det märks särskilt om man har en lite äldre maskin).
Tips: Testa att kompilera Release. Testa att förkompilera exe:n med ngen.exe.
PS. Du behöver inte tråda PlaySound (om du inte vill) den har stöd för att spela upp asynkront. DS.
Hm, om jag inte trådar PlaySound() så blir det ett mini uppehåll i applikationen (ett litet space invader spel). Så det måste nog göras med trådar tror jag.
Blev inget bättre med ngen.exe heller :( ! Vet ifs inte hur man anvädner den riktigt... jag körde endast: ngen filnamn