Je tente d'écrire un programme qui utilise une zone de liste déroulante pour afficher actuellement connectés ports COM obtenus à partir de la méthode suivante:Ajout/Suppression des ports COM à partir d'une zone de liste déroulante en C#
System.IO.Ports.SerialPort.GetPortNames()
L'idée est d'initialiser un fil qui vérifie les ports COM actuellement disponibles chaque seconde et met à jour le ComboBox en conséquence. Malgré mes meilleurs efforts, je ne peux pas le faire fonctionner.
Le code pour mettre à jour le contenu de ComboBox est la suivante:
private void Form1_Load(object sender, EventArgs e)
{
availPorts = new BindingList<String>();
Thread t = new Thread(new ThreadStart(update));
t.Start();
}
private void update()
{
this.comboBox1.DataSource = availPorts;
while (true)
{
Console.WriteLine("CHECK");
foreach (String port in System.IO.Ports.SerialPort.GetPortNames())
{
if (!availPorts.Contains(port))
{
Console.WriteLine("FOUND");
availPorts.Add(port);
}
}
Thread.Sleep(1000);
}
}
je peux voir les messages de la console que les ports se trouvent, mais le ComboBox reste vide. Toute aide serait grandement appréciée.
Avez-vous lié availPorts avec ComboBox? – longbkit
'this.comboBox1.DataSource = availPorts;' N'est-ce pas la déclaration de liaison? – isometrik
Pas lorsque vous en créez un nouveau dans l'événement Load. –