1

作成しようとしましたが、reportProgressがアクティブ化されると、「別のスレッドがオブジェクトを所有しているため、呼び出し元のスレッドはこのオブジェクトにアクセスできません」ためBackgroundWorker、Window1のProgressBarinはWindow2のinにアクセスできませんでした。

私が使用できる低レベルのスレッドモデルがあるようですが、それははるかに複雑なようです。

4

3 に答える 3

1

WPFでは、UIコントロールとプロパティはUIスレッドからのみアクティブ化できます。別のスレッドからプログレスバーの値を変更するために、GUIスレッドのディスパッチャーキューにコマンドを追加できます。Dispatcher.Invoke()これを行うには、デリゲートをメソッドに渡します。詳細については、 http://msdn.microsoft.com/en-us/magazine/cc163328.aspxの記事を参照してください。

于 2010-02-17T12:37:49.020 に答える
1

あなたはただProgressBardisptacherを手に入れる必要があります。

次の方法でアクセスできますProgressBar

Window2.prograssbar.Dispatcher.Invoke(
    () => /*the code for modifying the progressbar*/ );
于 2010-02-17T12:38:02.627 に答える
0

あなたは代表者を調べる必要があります

于 2010-02-17T12:34:35.043 に答える