MiniDisplay API update.
2 using System.Windows.Forms;
3 using System.Collections;
4 using System.ServiceModel;
5 using System.Collections.Generic;
7 using SharpDisplayInterface;
8 using System.Diagnostics;
10 namespace SharpDisplayManager
13 /// Implement our display service.
14 /// This class is instantiated anew whenever a client send a request.
17 ConcurrencyMode = ConcurrencyMode.Multiple,
18 InstanceContextMode = InstanceContextMode.PerSession
20 class DisplayServer : IDisplayService, IDisposable
22 public string SessionId { get; set; }
23 public string Name { get; set; }
27 Trace.TraceInformation("Server session opening.");
28 //First save our session ID. It will be needed in Dispose cause our OperationContxt won't be available then.
29 SessionId = OperationContext.Current.SessionId;
30 IDisplayServiceCallback callback = OperationContext.Current.GetCallbackChannel<IDisplayServiceCallback>();
32 Program.iMainForm.AddClientThreadSafe(SessionId,callback);
38 Trace.TraceInformation("Server session closing.");
39 Program.iMainForm.RemoveClientThreadSafe(SessionId);
42 //From IDisplayService
43 public void SetTexts(System.Collections.Generic.IList<TextField> aTextFields)
45 Program.iMainForm.SetTextsThreadSafe(SessionId, aTextFields);
49 public void SetText(TextField aTextField)
51 Program.iMainForm.SetTextThreadSafe(SessionId, aTextField);
55 public void SetName(string aClientName)
58 Program.iMainForm.SetClientNameThreadSafe(SessionId, Name);
59 //Disconnect(aClientName);
61 //Register our client and its callback interface
62 //IDisplayServiceCallback callback = OperationContext.Current.GetCallbackChannel<IDisplayServiceCallback>();
63 //Program.iMainForm.iClients.Add(aClientName, callback);
64 //Program.iMainForm.treeViewClients.Nodes.Add(aClientName, aClientName);
65 //For some reason MP still hangs on that one
66 //callback.OnConnected();
70 public int ClientCount()
72 return Program.iMainForm.iClients.Count;