首页 > 其他分享 >dotnet 8 WPF 支持在 RDP 远程桌面状态下启用渲染硬件加速

dotnet 8 WPF 支持在 RDP 远程桌面状态下启用渲染硬件加速

时间:2023-10-11 09:14:42浏览次数:47  
标签:RDP 渲染 硬件 远程桌面 dotnet WPF

本文将和大家介绍在 dotnet 8 里 WPF 引入的新功能之一,在 RDP 远程桌面状态下启用渲染硬件加速

在 dotnet 8 之前,在用户进行 RDP 远程桌面时 WPF 应用将默认关闭硬件渲染加速以获得更好的兼容性。随着系统层的渲染架构的优化,比如在 WDDM 驱动模型里面,进行远程桌面的硬件加速已经是非常简单且稳定的事情,这就意味着 WPF 框架底层可以不再判断当前是远程桌面模式时切换到软渲染模式,可以依旧使用硬件渲染加速。只有在 XP 系统上的 XDDM/XPDM 时,才需要在 RDP 远程桌面开启 WPF 应用软渲染

这个优化点在 2020 时就被 Vatsan Madhavan 大佬提出,详细请看 https://github.com/dotnet/wpf/issues/3215

由于 XP 已经过于考古且 dotnet 8 接近完全无法在 XP 系统上运行,于是我就对此进行优化,请看 https://github.com/dotnet/wpf/pull/7015

然而大佬们经过测试发现了一些额外的问题,且担心这个改动过于底层加上没有充分的测试,怕在一些奇怪的设备上运行错误。于是大佬重新提了 https://github.com/dotnet/wpf/pull/7684 用来提供配置的方式控制此功能,默认行为依然保持在 RDP 远程桌面时 WPF 应用将关闭硬件渲染加速,依然使用软渲染方式,保持和旧版本行为相同

只有在进行 Switch.System.Windows.Media.EnableHardwareAccelerationInRdp 配置之后,才会让 WPF 应用在远程桌面时开启硬件渲染

简单来说就是在 dotnet 8 下,默认情况这个新功能对任何开发者或用户是没有影响的,只有在开发者通过 Switch.System.Windows.Media.EnableHardwareAccelerationInRdp 配置启用 RDP 远程桌面时使用硬件渲染加速功能才会生效

以下是配置启用 RDP 远程桌面时使用硬件渲染加速功能的方法,以下代码推荐放在 App 构造函数,否则将可能渲染线程已经跑起来导致配置无效

        public App()
        {
            AppContext.SetSwitch("Switch.System.Windows.Media.EnableHardwareAccelerationInRdp", true);
        }

此功能在 dotnet 8 的行为是默认不开启的,这是因为缺乏足够的设备进行测试。计划在 dotnet 9 里面作为正式的功能

标签:RDP,渲染,硬件,远程桌面,dotnet,WPF
From: https://www.cnblogs.com/lindexi/p/17756214.html

相关文章

  • Windows更改计算机上的远程桌面的侦听端口
    更改计算机上的远程桌面的侦听端口转载:https://learn.microsoft.com/zh-CN/windows-server/remote/remote-desktop-services/clients/change-listening-port 适用范围:WindowsServer2022、Windows10、Windows8.1、Windows8、WindowsServer2019、WindowsServer2016、......
  • BenchmarkDotNet-Intro
    有些时候我们实现了某个功能,但是仅仅通过有限的几次调用无法知道这个功能的执行效率以及资源占用情况,此时就可以使用Benchmark对这个功能进行基准测试在dotnet中主要使用BenchmarkDotNetBenchmarkDotNet是一个.NET的基准测试框架,主要用于测量.NET程序的性能它可以......
  • 资源清单编写MySQL,wordpress
    目录mysqlwordpresshttp://k8s.driverzeng.com/v1.19/mysql[root@master-1mysql]#catmysql.yamlapiVersion:"v1"kind:"Pod"metadata:name:mysql57//资源清单叫mysql57spec:nodeName:node-1......
  • wordpress
    目录压测wordpress才分3个网络资源in压测[root@master-1ai]#catwordpress.yamlapiVersion:apps/v1kind:Deploymentmetadata:name:mysqlspec:replicas:1selector:matchLabels:app:mysql01template:metadata:labels:ap......
  • dokcer命令安装wordpress
    目录##1.镜像准备[root@docker01~]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEcentos7eeb6ee3f44bd24monthsago204MB##2.创建容器[root@docker01~]#dockerrun-p80:80-dcentos:7/bin/bash-c"while......
  • DockerFile部署wordpress并制作成镜像实践
    目录DockerFile部署wordpress实践部署wordpress准备Dockerfile所需文件开始制作成镜像访问网页将wordpress打包成镜像DockerFile部署wordpress实践部署wordpress#创建dockerfile目录[root@docker02~]#mkdir/Dockerfile#进入dockerfile目录[root@docker02......
  • 不关站备案技巧分享 亲测WordPress隐藏首页正常通过备案
    官老爷规定备案过程中需要关闭网站、不要问为什么,但是正常关站会影响网站收录、流量及口碑等一系列问题,那么有没有办法(1)既不影响搜索引擎收录(2)又能顺利通过备案呢?答案是:可以。简单说就是利用JS和CSS技术隐藏网站首页,但对于搜索引擎来说首页还是正常存在的,而且其它内页均不受影响......
  • wordpress - wp_cron 计划但未触发
    我正在尝试使用wp_schedule_single_event运行在用户操作时触发的后台脚本,虽然我已经确认事件正在安排中并且wp_cron认识到预定的时间已经过去,但它不会触发事件处理程序。更复杂的是,代码在我安装的本地WP上运行良好,但在我的服务器上什么也不做。要安排事件,我正在使用:if(......
  • 彻底解决 WordPress cURL error 28 错误
    cURL连接超时。这种情况最普遍,这里的超时并不是完全不可连接,而是因为网络状况或其它原因数据传输缓慢,超过连接的时间限制导致传输中断引起的错误。不论是何种原因导致连接超时,都可以通过增加超时限制来解决此问题。但URL完全不可访问此方法是解决不了的。首先将WordPress......
  • 【常用操作】CentOS系统配置远程桌面
    一、前言当前系统使用最小化安装方式,因使用需求变更,需要使用图形化界面操作,此处介绍如何安装图形化界面,并配置远程桌面二、安装部署1、安装图形化界面安装Gnome包yumgroupinstall"GNOMEDesktop""GraphicalAdministrationTools"-y更新系统运行级别ln-sf/lib/sy......