Tried using Control instead of Label as base class for our Marquee.
Sticking to Label for now.
2 using System.Collections.Generic;
3 using System.ComponentModel;
8 using System.Threading.Tasks;
9 using System.Windows.Forms;
10 using System.ServiceModel;
11 using System.ServiceModel.Channels;
12 using System.Diagnostics;
15 namespace SharpDisplayClient
17 public partial class MainForm : Form
24 InitializeComponent();
27 private void buttonSetText_Click(object sender, EventArgs e)
29 //iClient.SetText(0,"Top");
30 //iClient.SetText(1, "Bottom");
31 iClient.SetTexts(new string[] { textBoxTop.Text, textBoxBottom.Text });
34 private void MainForm_Load(object sender, EventArgs e)
36 iCallback = new Callback(this);
37 //Instance context is then managed by our client class
38 InstanceContext instanceContext = new InstanceContext(iCallback);
39 iClient = new Client(instanceContext);
41 //Connect using unique name
42 //string name = DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff tt");
43 string name = "Client-" + (iClient.ClientCount() - 1);
44 iClient.SetName(name);
45 //Text = Text + ": " + name;
46 Text = "[[" + name + "]] " + iClient.SessionId;
49 textBoxTop.Text = iClient.Name;
50 textBoxBottom.Text = iClient.SessionId;
56 public delegate void CloseConnectionDelegate();
57 public delegate void CloseDelegate();
62 public void CloseConnectionThreadSafe()
64 if (this.InvokeRequired)
66 //Not in the proper thread, invoke ourselves
67 CloseConnectionDelegate d = new CloseConnectionDelegate(CloseConnectionThreadSafe);
68 this.Invoke(d, new object[] { });
72 //We are in the proper thread
75 Trace.TraceInformation("Closing client: " + iClient.SessionId);
77 Trace.TraceInformation("Closed client: " + iClient.SessionId);
88 public void CloseThreadSafe()
90 if (this.InvokeRequired)
92 //Not in the proper thread, invoke ourselves
93 CloseDelegate d = new CloseDelegate(CloseThreadSafe);
94 this.Invoke(d, new object[] { });
98 //We are in the proper thread
104 private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
106 CloseConnectionThreadSafe();
109 public bool IsClientReady()
111 return (iClient != null && iClient.State == CommunicationState.Opened);