我试图让 BackgroundWorker 在程序逻辑执行期间更新 UI。但我得到了错误:
编辑!所以我的实际目标(我想从我提供的示例中并不清楚)是能够在更新 UI 的同时执行计算。请参阅下面的更新代码示例。
InvalidOperationException:调用线程无法访问此对象,因为不同的线程拥有它。
我的 C# 和 xaml 如下:
public partial class MainWindow : Window
{
private readonly BackgroundWorker worker = new BackgroundWorker();
public MainWindow()
{
InitializeComponent();
worker.DoWork += worker_DoWork;
}
void worker_DoWork(object sender, DoWorkEventArgs e)
{
test.Background = Brushes.Orange;
for (double x = 0; x < 10000000000; )
{
x++;
}
test.Background = Brushes.Red;
}
private void test_Click(object sender, RoutedEventArgs e)
{
worker.RunWorkerAsync();
}
}
然后,我的 XAML:
<Button Name="test" Click="test_Click">This is a button!</Button>