Я создал простую карточную игру с помощью приложения Windows Form. Единственное, что мне нужно сделать, это добавить музыкальные эффекты. Я записал в мп3 какие-то звуки (рисование карты и т. д.), Добавил в игру через WMPlib и все работает, кроме одного. Я хочу проигрывать музыку в середине метода, а не после его окончания - я имею в виду следующее:
private void Button_Click (object sender, EventArgs e)
{
//code of player 1
player.URL = @"draw a card.mp3";
//Immediatelly after that will play player 2
Player2();
}
void Player2()
{
//do stuff
System.Threading.Thread.Sleep(1000);
//do another stuff
player.URL = @"draw a card 2.mp3";
}
Что происходит, так это то, что оба звука воспроизводятся вместе после завершения кода. Можно ли как-нибудь управлять воспроизведением первого звука до вызова второго метода? Большое спасибо за любую помощь;)





попробуй это :)
private void Button_Click(object sender, EventArgs e)
{
//code of player 1
Task.Run(async () => {
//this will run the audio and will not wait for audio to end.
player.URL = @"draw a card.mp3";
});
//excecution flow is not interrupted by audio playing so it reaches this line below.
Player2();
}
Кроме того, я бы посоветовал вам держаться подальше от Thread.Sleep(XXX), поскольку он приостанавливает выполнение потока. и больше ничего не произойдет, пока вы спите.
Если вы спите нить, вы что-то делаете не так. Если вы хотите ввести задержку, используйте
await Task.Delayили создайте таймер и обработайте событие таймера.