我是C#的新手,我希望我對該問題的描述是可讀的。 這是我的問題,我正在開發一個win6.5手機應用程序。該應用程序應該有一些memu項目,一個是「掃描」,點擊後,它會反覆掃描附近的wifi接入點,並將它們顯示在列表視圖中。因此,我創建了一個線程,每隔10秒掃描一次while循環,我還使用listview.invoke使線程中的listview可訪問。單擊'scan'時,事物看起來很好,但是,由於while循環線程的運行,其他菜單項不能被點擊。我堅持在這裏好幾天了,對u人非常感謝幫助〜[C#窗體]在線程中調用listview時,其他控件不起作用
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);
}
}
非常感謝,它的工作原理。是因爲我的代碼調用APScan()在UI線程中執行?所以我應該把while語句放在scanThread中,然後應用程序在執行APScan()中的代碼時才凍結? – seekinghelp 2010-08-15 07:01:07
順便說一句,有沒有一種方式,應用程序永遠不會凍結時更新列表視圖? – seekinghelp 2010-08-15 07:10:00
@seekinghelp該應用不凍結。 UI線程執行例程;從這些例程中獲取更多時間對應於較慢的UI更新。 UI例程中的無限循環總是會凍結UI更新程序線程。 – Luca 2010-08-15 08:08:28