1

我正在使用 Prism 4.0 在 WPF .net 4 上工作 om 项目,在我将机器从 Windows 7 升级到 Windows 8 后,项目在到达活动视图时崩溃

object view = s.GetView(viewName);

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

异常发生在 s.Activate(view) 行,异常详情为“Value cannot be null.Parameter name: view”

这很奇怪,因为我检查了视图是否为空。
在 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 回答