private void btnRefresh_Click(object sender, EventArgs e)
        {
            try
            {
                tvDoors.Nodes.Clear();

                //old version:
                //DoorInfo[] doors = DoorControlClient.GetDoorInfo(null);

                List <DoorInfo> doors = GetList <DoorInfo>(DoorControlClient.GetDoorInfoList);

                foreach (var door in doors)
                {
                    {
                        TreeNode doorNode = new TreeNode(door.token);
                        doorNode.Tag = door;

                        DoorState state = DoorControlClient.GetDoorState(door.token);

                        doorNode.Nodes.Add("Alarm", "Alarm: " + (state.AlarmSpecified ? state.Alarm.ToString() : "Not specified"));
                        doorNode.Nodes.Add("DoorPhysicalState", "DoorPhysicalState: " + (state.DoorPhysicalStateSpecified ? state.DoorPhysicalState.ToString() : "Not specified"));
                        doorNode.Nodes.Add("LockPhysicalState", "LockPhysicalState: " + (state.LockPhysicalStateSpecified ? state.LockPhysicalState.ToString() : "Not specified"));
                        doorNode.Nodes.Add("DoubleLockPhysicalState", "DoubleLockPhysicalState: " + (state.DoubleLockPhysicalStateSpecified ? state.DoubleLockPhysicalState.ToString() : "Not specified"));
                        doorNode.Nodes.Add("DoorMode", "DoorMode: " + state.DoorMode.ToString());

                        string tamper = state.Tamper != null?state.Tamper.State.ToString() : "Undefined";

                        doorNode.Nodes.Add("Tamper", "Tamper: " + tamper);

                        string fault = state.Fault != null?state.Fault.State.ToString() : "Undefined";

                        doorNode.Nodes.Add("Fault", "Fault: " + fault);

                        tvDoors.Nodes.Add(doorNode);
                    }
                }
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.Message);
            }
        }