J'ai une application qui utilise une minuterie à 1 en 1 minute effectuer des données d'actualisation dans un DataGridView. Selon les informations à retourner à l'écran, un son différent sera joué. Chaque son a une durée de lecture. J'utilise cette commande pour avoir l'effet de la durée de ma musique.Thread.Sleep ne fonctionne pas comme prévu dans Windows Forms C#
Thread.sleep(GetMusicDuration[i] * 1000);
Quand je commence ma demande la première fois, tout va bien, mais quand le temps ne se TICK événement qui transporte les informations contenues dans le DataGridView à nouveau et exécuter PLAY pour lire les sons ma commande Thread.Sleep ne fonctionne pas , il ignore simplement ne pas attendre l'heure définie pour le paramètre.
public void PlaySound()
{
try
{
while (1 == 1)
{
List<string> distinctMusic = GetMusicFile.Distinct().ToList();
StopSound();
if (distinctMusic.Count > 0)
{
for (int i = 0; i < distinctMusic.Count; i++)
{
player.SoundLocation = distinctMusic[i];
player.Play();
Thread.Sleep(GetMusicDuration[i] * 1000);
StopSound();
}
}
DisposePlayer();
}
}
catch (Exception e)
{
if (generateLog)
log.LogTxt(e.ToString());
}
}
Jusqu'à maintenant je ne comprenais pas pourquoi l'exucução mal.
quelqu'un pourrait m'aider?
merci ...!
Qu'essayez-vous de faire? Je garantis la Thread.Sleep est la mauvaise approche ** Edit ** Je viens de relire la question et peut-être essayer d'utiliser une minuterie – Sayse
Je joue une chanson avec la classe SoundPlayer, et je cours Thread.Sleep comme temps de jeu, puis exécutez le SoundPlayer.Stop(); – user1792343
Etes-vous sûr de vouloir disposer de votre lecteur * dans votre boucle while? –