思杰和WPF,蓝色的窗口

我们正在构build将部署在Citrix上的WPF应用程序。 目前,您只需在Citrix下看到一个蓝色的窗口,尽pipe该应用程序在服务器上运行良好。

网上似乎确实存在一些问题。

思杰论坛讨论

微软的热修复

我们已经应用了热修复,但是这似乎并没有解决至less我们的问题。

另外,在这个网站上发现这个相同的问题,但它已被作者删除,所以没有答案。

我在Windows 2003服务器上运行citrix 4.5。 我想发布一个WPF应用程序(任何WPF应用程序有这个问题),我得到的是一个蓝色的矩形应用程序应该是。 矩形是我期望的窗口的确切大小和形状,但它只是蓝色(看起来像citrix桌面背景的颜色)。 有任何想法吗?

这是一个非常古老的问题,但是我遇到了同样的问题。

我不知道为什么,但是当我有两台显示器时,Citrix只显示任何WPF的蓝色窗口。 我通过拔掉其中一个显示器解决了问题,由于某些原因,Citrix正确地显示了WPF。

我的同事的设置和我一样,除了我们的第二台显示器是不同品牌的。 他的设置对两台显示器都能正常工作

我们在XP上运行Citrix上的.Net 4.0。

我自己也没有遇到这个问题,但是由于会话graphics的内存使用增加,我们在双屏客户端上减less了颜色深度。

也许蓝屏是自动降级的一个奇怪的人为因素,那么当你超出你的会话graphics限制时,Citrix将会启动吗?

我不确定MetaFrame XP,但据我所知,可以通过GUIconfiguration会话graphics限制的最大值是8.192 kb。 你的设置是什么?

我们做了什么

我们已经通过registry值MaxLVBMem将我们的限制增加到16 MB,即使使用双1920×1080监视器,也能够以24位色彩深度运行。

HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\icawd\thin16 MaxLVBMem (REG_DWORD) = 0x1000000 (16777216 dec) 

我们还将SessionViewSize从20增加到了32:

 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management SessionViewSize (REG_DWORD) = 0x20 (32 dec) 

最后,我们将SessionPoolSize从32 MB的默认值(在具有> 2 GB RAM的系统上)增加到了48 MB:

 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management SessionPoolSize (REG_DWORD) = 0x30 (48 dec) 

正如Microsoft KB840342中所述:

MaxLVBMem理想情况下应该消耗不超过系统分配的SessionPoolSize的35%到40%。 如果超过40%的SessionPoolSize被所需的MaxLVBMem占用,请将SessionPoolSize参数向上调整

和:

Microsoftbuild议以16兆的增量提高此设置。 不build议增加80兆字节以上的SessionPoolSize参数。

如果MaxLVBMem(设置为16 MB)消耗SessionPoolSize的最大35-40%,则至less应为46 MB。 这是通过将32 MB的默认值提高到48 MB来实现的。

编辑:

但是,正如微软知识库文章所述,您将不得不为您的环境find平衡点。 从32 MB增加到16 MB的16 MB可能不足以解决您的问题。 然而,增加价值太多,你可能会耗尽你的记忆池。

如果分配更多的内存来增加桌面堆,则可以减lessterminal服务器分配给其他资源(如非页面缓冲池,分页缓冲池和系统caching)的内存。 这将影响terminal服务器的性能。 而且,当更多内存分配给SessionViewSize和SessionPoolSize条目时,分配用于映射内核虚拟空间的内存将减less。 这反过来可能使terminal服务器仅支持有限数量的用户。

这就是说,我们目前看到的迹象表明,48 MB的SessionPoolSize对于我们的环境来说可能不够,所以我可能会用64 MB进行testing。

一定要监视你的内存池和免费系统PTE的变化之前和之后:-)

参考

  • CTX114497:如何在Windows Server 2003上允许更多的会话graphics内存 )
  • CTX112539:使用大量内存的会话变得无法响应
  • CTX113497:不正确的SessionPoolSize设置导致会话冻结
  • KB840342:应用程序可能无法在terminal服务环境中正常运行

当我再次阅读引用的知识库文章时,微软的KB840342听起来像是我第一件尝试的案例。