1

Windows 7 から Windows 8 にマシンをアップグレードした後、Prism 4.0 を使用して WPF .net 4 のプロジェクト ベースで作業しています。アクティブ ビューのポイントに到達するとプロジェクトがクラッシュします。

object view = s.GetView(viewName);

if (view != null)
{
  theRegion = (Region)s;
  s.Activate(view);
}

行 s.Activate(view) で例外が発生します。例外の詳細は「値を null にすることはできません。パラメータ名: ビュー」です。

ビューがnullでないことを確認しているので、これは奇妙です。
Windows 7では動作しています

何かアドバイス ?

ありがとう

ヤイル

4

1 に答える 1

0

うーん、それは私にはスレッドの問題のようです。潜在的に並行して実行され、ビューを取得し、if ステートメントと Activate メソッドが呼び出される間にそれを変更する可能性のある別のコードはありますか?

もしそうなら、ダブルチェックロックパターンはあなたの問題を解決するでしょう.

if (view != null) 
{ 
    lock (myLock)    // myLock is just a static object
    {
        if (view != null) 
        { 
            theRegion = (Region)s;
            s.Activate(view);
        }
    }
}

もちろん、ビューを変更している他の場所でも myLock をロックする必要があります。

于 2013-04-11T13:51:06.633 に答える