2016-07-19 1 views
-1

J'ai 14 périphériques différents dont j'ai besoin pour établir une connexion en même temps et toutes les quelques minutes pour re-vérifier l'état de la connexion.Connexion à plusieurs périphériques

Je me demande si je dois faire un fil de discussion pour chacun d'entre eux ou s'il y a une meilleure façon de le faire.

public partial class Automation : Form 
{ 
     public Automation() 
     { 
      InitializeComponent(); 
     } 
     //====================================================================== 
     TelnetConnection Telnet1 = new TelnetConnection("10.10.100.21", 9090); 
     TelnetConnection Telnet2 = new TelnetConnection("10.10.100.22", 9090); 
     TelnetConnection Telnet3 = new TelnetConnection("10.10.100.23", 9090); 
     TelnetConnection Telnet4 = new TelnetConnection("10.10.100.24", 9090); 
     TelnetConnection Telnet5 = new TelnetConnection("10.10.100.25", 9090); 
     TelnetConnection Telnet6 = new TelnetConnection("10.10.100.26", 9090); 
     TelnetConnection Telnet7 = new TelnetConnection("10.10.100.27", 9090); 
     //====================================================================== 
     TelnetConnection ADV1 = new TelnetConnection("10.10.100.1", 9090); 
     TelnetConnection ADV2 = new TelnetConnection("10.10.100.2", 9090); 
     TelnetConnection ADV3 = new TelnetConnection("10.10.100.3", 9090); 
     TelnetConnection ADV4 = new TelnetConnection("10.10.100.4", 9090); 
     TelnetConnection ADV5 = new TelnetConnection("10.10.100.5", 9090); 
     TelnetConnection ADV6 = new TelnetConnection("10.10.100.6", 9090); 
     TelnetConnection ADV7 = new TelnetConnection("10.10.100.7", 9090); 
     //====================================================================== 
     private void Automation_Load(object sender, EventArgs e) 
     { 
      //===========Check Online State===========// 
      Check_Online_Offline_State(); 
      //===========Check Online State===========// 
     } 
} 

Aussi je vais envoyer chacun des dispositifs commandes en cas de besoin mais le problème est avec les connexions Telnet, car ils courent dans tous les cas après 3 connexions, mais si je ne diffusez que les ADVS il établit une amende de connexion.

Suggestions?

+0

_ "ils courent en exception" _ - QU'EST-CE QUE EXCEPTION? –

+0

si l'un des IP n'est pas en ligne ou ne peut pas être atteint le programme ne chargera pas du tout – Extzy

Répondre

1

utilisation Parallel.ForEach, il est asynchrone multi-threading et moins de code, juste échantillon:

private TelnetConnection[] m_Connections; 
    ... 
    m_Connections = new TelnetConnection[50]; 
    for (var i = 0; i < m_Connections.Length; i++) 
    { 
    m_Connections[i] = new TelnetConnection(string.Concat("10.10.100.", i), 9090); 
    } 
    ... 
    Parallel.ForEach(m_Connections, conn => 
    { 
    bool isAlive = conn.IsHostAlive(); 
    }); 
+0

mais après, je envoie des commandes à tous à la fois non? – Extzy

+0

Je dois également pouvoir envoyer à chacun d'entre eux la commande à différents moments – Extzy

+0

Vous pouvez l'étendre par vous-même. C'était seulement un échantillon, pour utiliser le multithreading et moins de dactylographie. –