1 public class UISync
2 {
3 private static ISynchronizeInvoke Sync;
4
5 public static void Init(ISynchronizeInvoke sync)
6 {
7 Sync = sync;
8 }
9
10 public static void Execute(Action action)
11 {
12 Sync.BeginInvoke(action, null);
13 }
14 }
15
16 public partial class Form1 : Form
17 {
18 TrackBar trackBar1 = new TrackBar();
19 Label lblTime = new Label();
20 Label lblDuration = new Label();
21
22 public Form1()
23 {
24 UISync.Init(this);
25 }
26
27 void Events_PlayerStopped(object sender, EventArgs e)
28 {
29 UISync.Execute(() => InitControls());
30 }
31
32 void Events_MediaEnded(object sender, EventArgs e)
33 {
34 UISync.Execute(() => InitControls());
35 }
36
37 private void InitControls()
38 {
39 trackBar1.Value = 0;
40 lblTime.Text = "00:00:00";
41 lblDuration.Text = "00:00:00";
42 }
43
44 void Events_TimeChanged(object sender, EventArgs e)
45 {
46 UISync.Execute(() => lblTime.Text = TimeSpan.FromMilliseconds(DateTime.Now.Millisecond).ToString().Substring(0, 8));
47 }
48
49 void Events_PlayerPositionChanged(object sender, EventArgs e)
50 {
51 UISync.Execute(() => trackBar1.Value = (int)(88 * 100));
52 }
53
54
55 void Events_DurationChanged(object sender, EventArgs e)
56 {
57 UISync.Execute(() => lblDuration.Text = TimeSpan.FromMilliseconds(DateTime.Now.Millisecond).ToString().Substring(0, 8));
58 }
59 }