コード例 #1
0
        void checkTimer_Tick(object sender, EventArgs e)
        {
            var portNames = SerialPort.GetPortNames();

            //Eliminamos los nodos que ya no están conectados fisicamente
            for (int i = nodes.Count - 1; i >= 0; i--)
            {
                if (!portNames.Contains(nodes[i].PortName))
                {
                    nodes[i].ConnectionStateChanged -= newNode_ConnectionStateChanged;
                    nodes.RemoveAt(i);
                }
            }

            //Añadimos los nuevos nodos
            foreach (string portName in portNames.Where(p => !nodes.Exists(n => n.PortName == p)))
            {
                var newNode = new NodeConnection(portName);
                newNode.Identify();
                newNode.ConnectionStateChanged += newNode_ConnectionStateChanged;
                nodes.Add(newNode);
            }
        }
コード例 #2
0
 void newNode_ConnectionStateChanged(object sender, NodeConnection.ConnectionStates newState)
 {
     if (NodeCollectionChanged != null)
         EventHelper.RaiseEventOnUIThread(NodeCollectionChanged, new object[] { this, null });
 }