Client/MainForm.cs
author sl
Thu, 14 Aug 2014 18:37:23 +0200
changeset 29 c4e03315035c
parent 26 a6fb2b2f73b0
child 30 c375286d1a1c
permissions -rw-r--r--
Client/Server duplex is still a mess in C#.
     1 using System;
     2 using System.Collections.Generic;
     3 using System.ComponentModel;
     4 using System.Data;
     5 using System.Drawing;
     6 using System.Linq;
     7 using System.Text;
     8 using System.Threading.Tasks;
     9 using System.Windows.Forms;
    10 using System.ServiceModel;
    11 using System.ServiceModel.Channels;
    12 
    13 
    14 namespace SharpDisplayClient
    15 {
    16     public partial class MainForm : Form
    17     {
    18         Client iClient;
    19         Callback iCallback;
    20 
    21         public MainForm()
    22         {
    23             InitializeComponent();
    24         }
    25 
    26         private void buttonSetText_Click(object sender, EventArgs e)
    27         {
    28             //iClient.SetText(0,"Top");
    29             //iClient.SetText(1, "Bottom");
    30             iClient.SetTexts(new string[] { "Top", "Bottom" });
    31         }
    32 
    33         private void MainForm_Load(object sender, EventArgs e)
    34         {
    35             iCallback = new Callback();
    36             //Instance context is then managed by our client class
    37             InstanceContext instanceContext = new InstanceContext(iCallback);
    38             iClient = new Client(instanceContext);
    39 
    40             //Connect using unique name
    41             string name = DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff tt");
    42             iClient.Connect(name);
    43             Text = Text + ": " + name;
    44 
    45         }
    46 
    47         public void CloseConnection()
    48         {
    49             if (IsClientReady())
    50             {
    51                 //iClient.Disconnect();
    52                 iClient.Close();
    53             }
    54 
    55             iClient = null;
    56             iCallback = null;
    57         }
    58 
    59         private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
    60         {
    61             if (IsClientReady()) //Could catch exception instead
    62             {
    63                 iClient.Disconnect();
    64             }
    65 
    66             CloseConnection();
    67         }
    68 
    69         public bool IsClientReady()
    70         {
    71             return (iClient != null && iClient.State == CommunicationState.Opened);
    72         }
    73     }
    74 }