Bonjour , j'ai un programme qui fait un tour sur plusieurs equipements connecté via modbus, il récupére leurs état puis les insérent dans une base de donnée ,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 public List<Wago> VFD_R { get; set; } = new List<Wago>();
 
        public void imputregistre()
        {
 
            List<string> ipadresses_VFD = new List<string>();
            Wago Registres = new Wago();
            ipadresses_VFD.Add("194.176.3.12");
            ipadresses_VFD.Add("194.176.3.13");
            ipadresses_VFD.Add("194.176.3.17");
            ipadresses_VFD.Add("194.176.3.18");
            ipadresses_VFD.Add("194.176.3.22");
            ipadresses_VFD.Add("194.176.3.23");
 
            for (int index = 0; index < ipadresses_VFD.Count; index++)
            {
 
                Registres.Ip = ipadresses_VFD[index];
 
                try
                {
                    ModbusClient modbusClient = new ModbusClient(Registres.Ip, 502);
                    modbusClient.Connect();
                    Registres.Coils = modbusClient.ReadCoils(0, 6);
                    VFD_R.Add(Registres);
                    modbusClient.Disconnect();
 
                }
                catch (Exception ex)
                {
                }
 
            }
        }
le probléme c'est que quand le programme ne peut pas se connecter à un des ips(modbusClient.Connect() , il lance une exception connection time out et du coup , l'interface reste bloqué le temps que l'equipement ne s'est pas connecté , j'ai essayé de gérer l'exception mais ça n 'a pas résolut le probléme
vous avez des solutions pour le plantage du programme , dois-je introduire les threads dans le programme de connection ?