1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Microsoft.DirectX.AudioVideoPlayback;
using System.Threading;
namespace DispatcherAppliWpf {
public partial class Window1 : Window {
private Audio audio;
public Window1() {
InitializeComponent();
}
private delegate void AppelMethodeDelegate(double d);
private void _derouler(double o) {
SliderMorceau.Value = o;
}
private void BtnPlay_Click(object sender, RoutedEventArgs e) {
audio = new Audio(@"C:\...\Son.mp3");
audio.Starting += new EventHandler(audio_Starting);
audio.Ending += new EventHandler(audio_Ending);
SliderMorceau.Minimum = 0.0;
SliderMorceau.Maximum = audio.Duration*10.0;
audio.Play();
}
void audio_Starting(object sender, EventArgs e) {
ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(Traitement), ((Audio)sender).Duration*10.0);
}
private void Traitement(object o) {
for (double i = 0; i < (double)o; i++) {
SliderMorceau.Dispatcher.BeginInvoke(new AppelMethodeDelegate(_derouler), System.Windows.Threading.DispatcherPriority.Send, i);
Thread.Sleep(new TimeSpan(0, 0, 0, 0, 100));
}
}
void audio_Ending(object sender, EventArgs e) {
SliderMorceau.Value = SliderMorceau.Maximum;
}
}
} |
Partager