0

C#、VS2008 でマルチスレッド アプリケーションを作成しています。このコードを使用して、別のスレッドを使用して作成された要素を変更しました。

          m_OwnerPump.Dispatcher.Invoke(
              System.Windows.Threading.DispatcherPriority.Normal,
              new Action(
              delegate()
              {
                  m_OwnerPump.Name = textBoxPumpName.Text;
                  m_OwnerPump.Numbers = numbers.ToArray<string>();
                  //m_OwnerPump.City = tempInfo.City;
                  m_OwnerPump.EnergyConsumed = power;
              }));

以前は問題なく動作していましたが、なぜこの例外が突然スローされるのかわかりません!

4

1 に答える 1

0

最終的に問題を見つけるために、コードをいじってみました。正確な理由はわかりませんが、現在は機能しています。

問題は、インボーカー内で別のコントロールのプロパティを要求することにあったため、プロパティ値を文字列に入れてインボーカーで使用し、最終的なコード部分は次のとおりです。

            string pname = textBoxPumpName.Text;
            m_OwnerPump.Dispatcher.Invoke(
              System.Windows.Threading.DispatcherPriority.Normal,
              new Action(
              delegate()
              {
                  m_OwnerPump.Name = pname;
                  m_OwnerPump.Numbers = numbers.ToArray<string>();
                  m_OwnerPump.EnergyConsumed = power;
              }));
于 2012-08-12T13:17:41.587 に答える