Client/MainForm.cs
author sl
Fri, 15 Aug 2014 10:20:01 +0200
changeset 30 c375286d1a1c
parent 29 c4e03315035c
child 31 f19b04646b6a
permissions -rw-r--r--
Still trying to setup WCF for us to work nicely.
Now using multi threading and reliable session.
Implementing thread safe functions where needed.
Enforcing session mode.
Fixing bug in marquee label as we forgot to reset current position when text is changed.
sl@18
     1
using System;
sl@18
     2
using System.Collections.Generic;
sl@18
     3
using System.ComponentModel;
sl@18
     4
using System.Data;
sl@18
     5
using System.Drawing;
sl@18
     6
using System.Linq;
sl@18
     7
using System.Text;
sl@18
     8
using System.Threading.Tasks;
sl@18
     9
using System.Windows.Forms;
sl@18
    10
using System.ServiceModel;
sl@18
    11
using System.ServiceModel.Channels;
sl@20
    12
sl@18
    13
sl@18
    14
namespace SharpDisplayClient
sl@18
    15
{
sl@18
    16
    public partial class MainForm : Form
sl@18
    17
    {
sl@26
    18
        Client iClient;
sl@26
    19
        Callback iCallback;
sl@18
    20
sl@18
    21
        public MainForm()
sl@18
    22
        {
sl@18
    23
            InitializeComponent();
sl@18
    24
        }
sl@18
    25
sl@18
    26
        private void buttonSetText_Click(object sender, EventArgs e)
sl@18
    27
        {
sl@19
    28
            //iClient.SetText(0,"Top");
sl@19
    29
            //iClient.SetText(1, "Bottom");
sl@30
    30
            iClient.SetTexts(new string[] { iClient.Name, iClient.SessionId });
sl@18
    31
        }
sl@18
    32
sl@18
    33
        private void MainForm_Load(object sender, EventArgs e)
sl@18
    34
        {
sl@26
    35
            iCallback = new Callback();
sl@25
    36
            //Instance context is then managed by our client class
sl@26
    37
            InstanceContext instanceContext = new InstanceContext(iCallback);
sl@26
    38
            iClient = new Client(instanceContext);
sl@18
    39
sl@29
    40
            //Connect using unique name
sl@29
    41
            string name = DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff tt");
sl@29
    42
            iClient.Connect(name);
sl@30
    43
            //Text = Text + ": " + name;
sl@30
    44
            Text = Text + ": " + iClient.SessionId;
sl@18
    45
sl@18
    46
        }
sl@21
    47
sl@21
    48
        public void CloseConnection()
sl@21
    49
        {
sl@29
    50
            if (IsClientReady())
sl@29
    51
            {
sl@29
    52
                //iClient.Disconnect();
sl@29
    53
                iClient.Close();
sl@29
    54
            }
sl@29
    55
sl@26
    56
            iClient = null;
sl@26
    57
            iCallback = null;
sl@26
    58
        }
sl@26
    59
sl@26
    60
        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
sl@26
    61
        {
sl@29
    62
            if (IsClientReady()) //Could catch exception instead
sl@26
    63
            {
sl@26
    64
                iClient.Disconnect();
sl@26
    65
            }
sl@29
    66
sl@29
    67
            CloseConnection();
sl@29
    68
        }
sl@29
    69
sl@29
    70
        public bool IsClientReady()
sl@29
    71
        {
sl@29
    72
            return (iClient != null && iClient.State == CommunicationState.Opened);
sl@21
    73
        }
sl@18
    74
    }
sl@18
    75
}