.Net 4.0 - Task.Factory を選択した回数だけ使用して、ボタン クリックで .wav サウンドを再生しようとしていますが、問題なく再生されていますが、別のボタンでこのサウンドをすばやく停止したい場合は、停止ボタンと言うことができますが、すぐに音を止めるのではなく、完全に再生した後にのみ停止します...以下は私のコードです...
CancellationTokenSource tokenSource = new CancellationTokenSource();
private void btnStartPlaying_Click(object sender, EventArgs e)
{
tokenSource = new CancellationTokenSource();
List<Task> tasks = new List<Task>();
var ui = TaskScheduler.FromCurrentSynchronizationContext();
int playTimes = 3;
var compute = Task.Factory.StartNew(() =>
{
Playing(playTimes);
}, tokenSource.Token);
tasks.Add(compute);
var displayResults = compute.ContinueWith(resultTask =>
Environment.NewLine,
CancellationToken.None,
TaskContinuationOptions.OnlyOnRanToCompletion,
ui);
var displayCancelledTasks = compute.ContinueWith(resultTask =>
Environment.NewLine,
CancellationToken.None,
TaskContinuationOptions.OnlyOnCanceled, ui);
Task.Factory.ContinueWhenAll(tasks.ToArray(),
result =>
{
}, CancellationToken.None, TaskContinuationOptions.None, ui);
}
private void btnStopPlaying_Click(object sender, EventArgs e)
{
tokenSource.Cancel();
}
public void Playing(int times)
{
try
{
using (SoundPlayer player = new SoundPlayer("mySoundFile.wav"))
{
for (int i = 0; i < times; i++)
{
tokenSource.Token.ThrowIfCancellationRequested();
player.PlaySync();
}
}
}
catch (Exception ex)
{
MessageBox.Show("Stopped!!!!!");
}
}