-1

基本的に単なるチャートであるWPFプロジェクトがあります。私が達成すべきことは、バックグラウンド スレッドでチャート ポイントを更新することですが、その後、クラッシュする新しいスレッドを作成しています。

public void UpdateChart()
{
 ... 
}

Thread newThread = new Thread(UpdateChart());
newThread.Start();

例外:

DependencyObject と同じ Thread に DependencySource を作成する必要があります。

4

1 に答える 1

3

よく知られているクロス スレッド アクセスの問題に直面しています。クロス スレッド コンテキストではオブジェクト ポインターが無効であるため、あるスレッドのオブジェクトは別のスレッドのオブジェクトにアクセスできません。そのための複数のソリューションを持つことができます。

  • 呼び出すことができるデリゲート メソッドを作成できます。これについてグーグルすると、多くの結果が得られます

  • もう 1 つのオプションは、完了/進行状況などのスレッド ステータス イベントを使用することです。バックグラウンド ワーカー コンポーネントを使用すると、進行状況を報告できます。これを使用してチャートを更新できます。

  • 別の方法は、 this.invoke(delegate,params[]) システムを使用することです。アプリケーションをクラッシュさせることなく、別のスレッドでメソッドを呼び出すことができます。

C# でのクロス スレッド GUI の更新に関する単純な Google 検索で、多くの資料を取得できます。これについてさらに情報が必要な場合はお知らせください。

于 2013-03-16T09:39:23.250 に答える