在我们的C#WPF中,我们使用显示地图的第三方(非托管)库。 我们使用System.Windows.Interop.D3DImage类。 第三方库使用Direct3D作为IntPtr32表面位置属性。
当我从另一台计算机打开远程桌面并尝试查看WPF客户端时,我们会看到该地图。 一旦WPF UI客户端启动,我最小化RDP会话或关闭RDP我将得到异常:
Direct3D device is lost
根据我对视频流应用程序的经验,当窗口最小化时,它会停止渲染图像以保存bandwitdh。 我猜rdp表现一样吗?它可以配置吗?即使窗口最小化,我希望继续流式传输。
我知道有additional settings in the .RDP file as mentioned here. directx设置为:redirectdirectx:i:1
到目前为止的部分答案: 当RDP客户端应用程序连接到RDP服务时,当显示窗口时,它是GUI模式,当它被最小化时,它是GUI-LESS模式,并且Direct 3D组件真的丢失了。为了在最小化期间保持活着,必须打开注册表项(RemoteDesktop_SuppressWhenMinimized)
将此密钥用于1个特定用户(对所有用户使用HKLM):
HKEY_CURRENT_USER \ Software \ Microsoft \ Terminal Server Client \ RemoteDesktop_SuppressWhenMinimized
type = DWORD
价值观:
0 = SUPPRESS_WHEN_MINIMIZED_AUTO
1 = SUPPRESS_WHEN_MINIMIZED_ENABLE
2 = SUPPRESS_WHEN_MINIMIZED_DISABLED