Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 插入新监视器时在xna中绘图时出现异常_Wpf_C# 4.0_.net 4.0_Xna_Multiple Monitors - Fatal编程技术网

Wpf 插入新监视器时在xna中绘图时出现异常

Wpf 插入新监视器时在xna中绘图时出现异常,wpf,c#-4.0,.net-4.0,xna,multiple-monitors,Wpf,C# 4.0,.net 4.0,Xna,Multiple Monitors,我的xna解决方案有问题。 当我在运行xna解决方案时将新显示器插入计算机时,会出现异常: 试图读取或写入受保护的内存。这通常表示其他内存已损坏 这总是发生在这一行: mSimpleEffect.CurrentTechnical.Passes[0]。应用 只有当我把新显示器插到电脑上时。我完全不懂 mSimpleEffect是类BasicFect的对象。这一行位于事件OnFrameRender的内部,它位于一个try块中,该块不会捕获它,每次程序要渲染新帧时都会调用它。我不太确定这是否会有帮助,

我的xna解决方案有问题。 当我在运行xna解决方案时将新显示器插入计算机时,会出现异常:

试图读取或写入受保护的内存。这通常表示其他内存已损坏

这总是发生在这一行:

mSimpleEffect.CurrentTechnical.Passes[0]。应用

只有当我把新显示器插到电脑上时。我完全不懂


mSimpleEffect是类BasicFect的对象。这一行位于事件OnFrameRender的内部,它位于一个try块中,该块不会捕获它,每次程序要渲染新帧时都会调用它。

我不太确定这是否会有帮助,但通过使用WPF/OSG渲染和调整窗口大小,它会隐藏一个模拟问题

它就像当你插入显示器时,分辨率在改变,渲染缓冲区也在改变,特别是当你在全屏显示时。 通过改变分辨率,引擎试图通过在缓冲区中没有足够的位置来渲染到相同的缓冲区大小

我不知道这是否有帮助,但我想你需要 1.尝试截取屏幕大小更改/或插件消息,并对其做出响应,就像通过更改分辨率一样

 protected override void Update(GameTime gameTime)


 {
        if(userClickedTheResolutionChangeButton)
        {
            graphics.IsFullScreen = userRequestedFullScreen;
            graphics.PreferredBackBufferHeight = userRequestedHeight;
            graphics.PreferredBackBufferWidth = userRequestedWidth;
            graphics.ApplyChanges();
        }

        // ...
    } 

如果这至少在某种程度上有帮助的话,我很高兴,但是让我们等待一个专业的answare:

谢谢,但是因为我使用的是wpf,我不知道把这段代码放在哪里。如果您使用的是XNA,那么您可能有一个派生自:Game的类。这是覆盖更新功能的正确位置不,我不使用任何源自游戏的东西。。。我使用的是GraphicsDevice,但也可以看看像devicelost这样的成员,它是GraphicsDevice创建的资源。这就是我所发现的。。