,我有一個列表框控件和兩個按鈕。我希望能夠使用第二個按鈕,當我點擊第一個按鈕,直到添加數字沒有細化他的工作。我使用dispatcher.begininvoke,但這增加了主線程上的工作。如何同步這個線程?我想能夠使用第二個按鈕,移動窗口或使用其他UI元素addnumbers processing ..調用線程不能訪問這個對象,因爲一個不同的線程擁有它。我不想在wpf中使用調度器
void AddNumbers()
{
for (int i = 1; i <= 1000000; i++)
{
listBox1.Items.Add(i);
}
}
private void button1_Click(object sender, RoutedEventArgs e)
{
Thread thr = new Thread(new ThreadStart(AddNumbers));
thr.Start();
}
private void button2_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("Hello World!");
}
你不能。這不是需要時間的循環,而是「Add」調用。儘管如此,你可以做的是試着在'listBox1.BeginUpdate()'和'listBox1.EndUpdate()'中包裝這個方法來阻止它在中間畫圖。 – Ryan
這將需要調度程序或帶有數據綁定的線程安全'observablecollection'。使用調度程序沒有任何問題。 – Tyrsius