1: public partial class MainPage : UserControl
2: {
3: private AutoResetEvent autoResetEvent = new AutoResetEvent(false);
4: public MainPage()
5: {
6: InitializeComponent();
7: StartServerTimeUpdatingSyncronosly();
8: }
9: private void StartServerTimeUpdatingSyncronosly()
10: {
11: try
12: {
13: Thread thread = new Thread(new ThreadStart(UpdateTimeSyncronosly));
14: thread.Start();
15: }
16: catch (Exception ex)
17: {
18: MessageBox.Show(ex.Message, "SynchronousWebServiceCalling", MessageBoxButton.OK);
19: }
20: }
21: private void UpdateTimeSyncronosly()
22: {
23: SynchronousWebServiceCalling.ContentServiceReference.ContentServiceClient contentServiceClient = new SynchronousWebServiceCalling.ContentServiceReference.ContentServiceClient();
24: contentServiceClient.ReturnServerTimeCompleted += new EventHandler<SynchronousWebServiceCalling.ContentServiceReference.ReturnServerTimeCompletedEventArgs>(ReturnServerTimeCompleted);
25: string message = "Retrieving new server time...";
26: while (true)
27: {
28: this.Dispatcher.BeginInvoke(new Action<string>(DisplayBusyMessage), message);
29: contentServiceClient.ReturnServerTimeAsync();
30: autoResetEvent.WaitOne();
31: }
32: }
33: void ReturnServerTimeCompleted(object sender, SynchronousWebServiceCalling.ContentServiceReference.ReturnServerTimeCompletedEventArgs e)
34: {
35: this.Dispatcher.BeginInvoke(new Action<string>(DisplayTime), e.Result);
36: string message = "New server time is retrieved";
37: this.Dispatcher.BeginInvoke(new Action<string>(DisplayBusyMessage), message);
38: System.Threading.Thread.Sleep(5000);
39: autoResetEvent.Set();
40: }
41: private void DisplayTime(string time)
42: {
43: tblTime.Text = time;
44: }
45: private void DisplayBusyMessage(string message)
46: {
47: StatusLabel.Text = message;
48: }
49: }