1: protected override void ThreadProc()
2: {
3: Debug.WriteLine("ThreadProc");
4:
5: while(WaitHandle.WaitTimeout == WaitHandle.WaitAny(this.ExitHandles, 5000))
6: {
7: if (this.Mode != PollingClientMode.Master)
8: {
9: Deployment.Current.Dispatcher.BeginInvoke(
10: ()=> this.TryConvertToMaster());
11: }
12: }
13: }
14:
15: /// <summary>
16: /// Tries the convert to master.
17: /// </summary>
18: private void TryConvertToMaster()
19: {
20: Debug.WriteLine("TryConvertToMaster");
21:
22: LocalMessageReceiver receiver = this.CreateReceiver();
23:
24: if (receiver != null)
25: {
26: Debug.WriteLine("created");
27:
28: // detach all
29: this.Core.Stop();
30: this.Core.AlarmReceived -= new EventHandler<NotifyAlarmReceivedEventArgs>(Core_AlarmReceived);
31: this.Core.Connected -= new EventHandler(Core_Connected);
32: this.Core.Disconnected -= new EventHandler(Core_Disconnected);
33: this.Core.Fault -= new EventHandler<PollingFaultEventArgs>(Core_Fault);
34: // create new core
35: this.Core = new MasterPollingClientCore(this.SessionId, this.EndPoint, receiver);
36: // attach all
37: this.Core.AlarmReceived += new EventHandler<NotifyAlarmReceivedEventArgs>(Core_AlarmReceived);
38: this.Core.Connected += new EventHandler(Core_Connected);
39: this.Core.Disconnected += new EventHandler(Core_Disconnected);
40: this.Core.Fault += new EventHandler<PollingFaultEventArgs>(Core_Fault);
41: this.Core.Start();
42: }
43: }