プログラムロジックの実行中に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>