Je suis nouveau en C#, j'espère que ma description du problème est lisible. Voici mon problème, je développe une application pour un mobile win6.5. L'App devrait avoir quelques éléments memu, l'un est 'scan', quand on clique dessus, il scanne à plusieurs reprises les points d'accès wifi à proximité, et les affiche sur une liste. Donc je crée un thread avec une boucle while pour l'analyse toutes les 10 secondes, j'utilise aussi listview.invoke pour rendre la listview accessible dans le thread. Les choses semblent bien quand on clique sur 'scan', cependant, d'autres éléments de menu ne peuvent pas être cliqués en raison de l'exécution du thread de boucle while. Je coincé ici depuis plusieurs jours, un grand merci pour les gars u aider ~[C# Windows forme] Lorsque vous invoquez un listview dans un thread, les autres contrôles ne fonctionnent pas
private void menuItemScan_Click(object sender, EventArgs e)
{
...
Thread t = new Thread(new ThreadStart(ScanThread));
t.Start();
}
private void ScanThread()
{
listView1.Invoke(new APScanCallback(APScan));
}
public void APScan()
{
while (true)
{
listView1.Items.Clear();
foreach (AccessPoint ap in wzcInterface.NearbyAccessPoints)
{
ListViewItem item = new ListViewItem(ap.Name);
item.SubItems.Add(ap.PhysicalAddress.ToString());
item.SubItems.Add(ap.SignalStrength.Decibels.ToString());
item.SubItems.Add(ap.AuthenticationMode.ToString());
listView1.Items.Add(item);
}
listView1.Refresh();
Thread.Sleep(10000);
}
}
Merci beaucoup, ça marche. Est-ce parce que mon code appelle le APScan() pour exécuter dans le thread UI? donc je devrais mettre l'instruction while dans le scanThread alors l'application se fige seulement au moment de l'exécution du code dans APScan()? – seekinghelp
btw, y at-il un moyen que l'application ne se fige jamais lors de la mise à jour listview? – seekinghelp
@seekinghelp L'application ne gèle pas. Le thread UI exécute des routines; plus de temps pris à partir de ces routines correspond à une mise à jour de l'interface utilisateur plus lente. Les boucles infinies dans les routines d'interface utilisateur gèlent toujours le thread de mise à jour de l'interface utilisateur. – Luca