首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C++20 新特性重塑模板编程范式

    本章将通过 Windows 开发中的典型场景,深度解析这些特性如何重构现代模板编程范式。... 时,开发者面临:宏污染:min/max 与标准库冲突编译延迟:平均每个翻译单元增加 2-3 秒ODR 违规风险:跨 DLL 的模板实例化问题3.2 模块化 Windows 开发实战创建预编译的...(文件、套接字等)可与 Ranges 结合实现流式处理第五章:【实战】跨范式句柄统一——基于 Concept 的异步操作模板类设计如何设计一个基于 Concept 的模板类,使其能够同时兼容 Win32...的 HANDLE 和 C++/WinRT 的 winrt::handle,并提供统一的异步操作接口?...::handle 智能句柄核心需求:设计一个模板类,满足以下要求:统一管理两种句柄类型的生命周期提供一致的异步读写接口兼容 Win32 重叠 IO 和 WinRT 协程两种异步模型编译时类型安全检查5.2

    24810

    COM简介

    COM定义了如何创建、使用和管理软件组件,这些组件可以在不同的应用程序之间共享。本文将深入探讨COM的基本概念、工作原理、以及它在现代软件开发中的应用。...COM的工作原理对象的创建COM对象的创建通常通过类工厂进行。类工厂是一个特殊的接口,它负责创建对象实例。...当客户端请求一个对象时,它首先获取类工厂的接口指针,然后调用类工厂的CreateInstance方法来创建对象。接口查询客户端可以通过QueryInterface方法请求对象的不同接口。...这些模型决定了对象如何在多线程环境中被使用和管理。COM的应用自动化和OLECOM最初被设计用于实现自动化和对象链接与嵌入(OLE)。...Windows Runtime(WinRT)在Windows 8和更高版本的Windows中,WinRT是新的组件模型,它在很大程度上基于COM。

    2.4K00

    将 C++WinRT 中的线程切换体验带到 C# 中来(WPF 版本)

    ---- C++/WinRT 以下 C++/WinRT 的代码来自 Raymond Chen 的示例代码。...在看他编写的 UWP 版本之前我也思考了可以如何实现一个 .NET / WPF 的版本,然后成功做出了这样的效果。...TextBlock3().Text(result3); } 可以看到,使用 co_await winrt::resume_background(); 可以将线程切换至线程池,使用 co_await winrt...关于如何编写一个 Awaiter,可以阅读我的其他博客: 定义一组抽象的 Awaiter 的实现接口,你下次写自己的 await 可等待对象时将更加方便 - 吕毅 .NET 中什么样的类是可使用 await...- 吕毅 .NET 除了用 Task 之外,如何自己写一个可以 await 的对象? - 吕毅 这里,我直接贴出我编写的 DispatcherSwitcher 类的全部源码。

    21120

    asio 调度器实现 - timer 实现详解

    另外对于一个容器, 我们也需要了解 它的增删操作是如何完成的. 增加节点: 1. 在队列尾部先加入相关元素. 2....根据当前元素的大小, 逐步执行shift-up操作, 直到找到一个合适的位置(满足min-heap约束) 举例来说: 对于上图这样一个已有的min-heap, 当我们插入一个新的值为0的节点时...当然, 使用平台无关的winrt_timer_scheduler也会存在一点额外的开销, 区别于系统Api直接通知, winrt_timer_scheduler需要额外的线程来完成从timer_queue...当我们使用epoll_reactor作为timer scheduler的时候, 整体系统的工作流程图如下: 图引用自 参考3: 深入学习定时器 timer_fd是linux2.6.25加入的功能,...区别于winrt_timer_scheduler使用一个额外的线程, 使用timer_fd的话, 我们则可以利用reactor本身来完成相关的超时等待, 不需要额外的线程.

    69690

    WinRT开发语言的功能和效率

    WinRT开发有着多种选择性,就编程语言这一点就表现的很突出;这里就这一点 深入展开,探讨在WinRT开发之初如何依据各 个编程语言的特性、功能和效率来对 产品的技术方向做出选择。...考虑到演示和 理解,就选择了查找100000以内的所有素数的个数的算法作为演示。另外也顺带演 示如何在WinRT下实现多编程语言和技 术之间的协作吧。...(注意 是CLR类库,只能在C#/VB直接通用),在C# WinRT App工程中调用这个类库,执行 结果如下(单位毫秒): 执行次数 1(启动) 2 3 4 5 普通 12.0299 9.0019 10.003...,选择CLR会比较容易 控制的;如果原来已有的Web项目 向WinRT迁移,那么前段展示则可以考虑使用 WinJS+HTML来实现,后台算法根据需要选择C++或者CLR。...,或者从老系统迁移,那 么这时候更多的考虑是使用已有资源,直到性能瓶颈的时 候才采取措 施——以C++重写性能瓶颈来解决,当然,如果没有C++经验,也可以考 虑使用C#/VB来 实现WRC以包装核心逻辑

    1.1K60

    《CLR via C#》笔记:第4部分 核心机制(4)

    /反序列化快速入门 使类型可序列化 控制序列化和反序列化 格式化器如何序列化类型实例 控制序列化/反序列化的数据 流上下文 类型序列化为不同类型以及对象反序列化为不同对象 序列化代理 反序列化对象时重写程序集...流对象标识了序列化好的字节应放到哪里,它可以是从System.IO.Stream抽象基类派生的任何类型的对象。...调用格式化器的Serialize方法时,对象图中的所有对象都被序列化到流中。(P544 1) 格式化器参考对每个对象的类型进行描述的元数据,从而了解如何序列化完整的对象图。...(P544 3) 请确保序列化和反序列化使用相同的格式化器。(P545 1) 使类型可序列化 设计类型时,设计人员必须郑重地决定是否允许类型的实例序列化。类型默认是不可序列化的。...(P548-P550) 格式化器如何序列化类型实例 为了简化格式化器的操作,FCL在 System.Runtime.Serialization命名空间提供了一个FormatterServices类型。

    36620

    About Windows 10 SDK Preview Build 17110

    应用目标版本为 1803 或更新时才可以使用嵌入手写输入。把 IsHandwritingViewEnabled  属性设置为 false 可以禁用这个功能。...微软推荐在以下场景使用 Navigation View: 存在同一类型多个顶级导航元素,例如一个体育类 App 中包含不同的体育项目 5-10 个顶级导航分类的场景 提供一个易用的导航体验,容器中仅包含导航元素...官方提出的几个 UWP Console App 的注意事项: 只能使用  C++ /WinRT 或 CX /UWP 来开发 目标必须是 桌面或 IoT 项目类型 应用中不能创建窗体,所以 MessageBox...这样的窗体不能使用 不支持后台任务 不支持激活协议,如文件和协议等 支持多实例,但不支持多实例重定向 Win32 API 可用列表:Win32 and COM APIs for UWP apps Machine...可以想象一下 Office 打开或编辑文件时的场景。

    1.6K40

    WPF 不带 TargetPlatformVersion 显示 Win10 的 Toast 通知的方法

    本文将告诉大家如何在 WPF 不安装 WindowsAppSDK 包,且不在 TargetFramework 带上 TargetPlatformVersion 而弹出 Win10 的 Toast 通知的方法...接下来来将告诉大家一个我感觉比较清真的方法 使用 WPF 不安装 WindowsAppSDK 使用 WinRT 功能的方法 这篇博客提到的方法,即可不用指定 TargetPlatformVersion...就可以使用 WinRT 的功能 正好 Toast 就是 WinRT 的功能 具体的做法是先取出 Microsoft.Windows.SDK.NET.dll 和 WinRT.Runtime.dll 两个文件作为引用...XML 直接写比较适合简单的业务,可以看到以上的代码十分简单 除了直接编写 XML 之外,还可以使用模版辅助,如下面代码,在 ToastNotificationManager 里面获取模版,然后在模版里面添加内容...我整个代码仓库比较庞大,使用以下命令行可以进行部分拉取,拉取速度比较快 先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文的代码 git init git

    10710

    【Rust日报】 2020-04-30 微软 RustWinRT 预览版发布

    微软 Rust/WinRT 预览版发布 微软的 Rust/WinRT 项目已经在 GitHub 开源:https://github.com/microsoft/winrt-rs。...Rust/WinRT 遵循 C++/WinRT 建立的传统,即使用标准语言和编译器为 Windows 运行时构建语言投影,从而为 Rust 开发人员调用 Windows API 提供了舒服的惯用方式。...评测 Rust vs Go REST API 性能 这是一个短篇幅系列博文,分为两部分,在第一部分中,你将学习如何:在 Rust 中创建快速的 REST API 和将其连接到 PostgreSQL 数据库...尽管不是特定于 Rust,但在 Rust 编程的中也有很多地方探讨了 typestate。 Typestate可以归结为四个想法: 每个状态都表示为唯一类型。 状态转换仅可用作相应状态类型的方法。...本篇博文中,我将探讨确定下一个状态不是那么简单的情况。在此过程中,我们将讨论类型级编程,或者如何使用 Rust 的类型系统对类型的计算进行编码。 本篇博文中的部分目标是在实践中显示类型级编程的价值。

    52610

    Windows Runtime(WinRT) 揭秘

    UI的.NET基础,如果考察Metadata的变化,WinRT的API定义的元数据是基于标准ECMA 335,也就是.NET的标准 ,WinRT也是一个沙箱的环境,针对AppStore环境设计的。...当你使用C#和VB,你使用的是完整的.NET框架。但是他们只暴露了一个较小的子集API给Windows 8的开发者。...创建WinRT 组件 虽然WinRT支持很多的语言,但是微软只是用C++和.NET演示了如何开发一个WinRT组件,使用.NET来开发WinRT组件会比C++简单得多。...也不是所有的.NET特性都能用上哦,比如组件类就不能使用private 字段,在异步的API里不能使用Task ,要用IAsyncOperation 代替。...声明,唯一限制的是,类必须是个密封的(除非你是在创建一个XAML UI组件,这种情形下这种限制是接触的) UI编程 当涉及到用户界面的开发的时候,你你可以使用HTML与CSS样式或使用XAML的你的应用程序的用户界面

    1.2K100

    dotnet 5 让 WPF 调用 WindowsRuntime 方法

    本文告诉大家在 dotnet 5 里,如何使用 WinRT 加上 Microsoft.Windows.SDK 的辅助来调用 WindowsRuntime 方法。...本文和大家演示如何在 WPF 应用里面用上 UWP 提供的 FolderPicker 类型 需要将原有的基于 .NET 5 的 WPF 应用的 csproj 替换 net5.0-windows 为 net5.0...尽管官方文档说可以使用 WinRT.Interop.InitializeWithWindow.Initialize 方法进行初始化,然而实际上我没有找到此 InitializeWithWindow 类型...,应用是不需要进行打包为 MSIX 包在用户端进行部署就可以使用,双击 exe 就可以使用,和之前的相同。...因为调用 WindowsRuntime 的原理是 COM 调用,不需要进行打包 本文所有代码放在 github 和 gitee 欢迎访问 可以通过如下方式获取本文代码 先创建一个空文件夹,接着使用命令行

    1.1K20

    UWP WinRT 使用系统自带的分词库对字符串文本进行分词

    本文将和大家介绍在 UWP 应用,或其他能接入 WinRT 的应用里,使用系统自带的分词库,对中文、英文等等自然语言的字符串文本进行分词 开始之前需要说明的是,现在不仅仅 UWP 应用,其他的 UI...详细请参阅 我的博客导航 的 WinRT 部分 本文将采用 UWP 作为例子,在 WPF 下调用的 API 也是相同的,许多代码都可以直接拷贝,不需要做更改 先新建一个 UWP 应用,由于本次采用的是...WinRT 提供的方法,直接就是平台自带提供,不需要安装额外的 NuGet 包 先看看分词的效果: 开始之前,先写一点有趣的界面方便进行测试,界面代码如下,本文所有的代码都可以在本文末尾找到下载方式...创建了 WordsSegmenter 对象,即可通过 GetTokens 方法进行分词,分词时可以看到分出的每个单词和对应的词在字符串里面的偏移量 以上就是 WinRT 使用系统自带的语言文化分词库对文本进行分词的方法...本文以上代码放在github 和 gitee 欢迎访问 可以通过如下方式获取源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到代码 git init

    61510

    c++异步:asio的scheduler实现!

    require(): 获取满足对应属性的对象。 prefer(): 获取包含定制内容的对象。...四、operation的实现 作为一个比较函数式的调度器实现,首先要打理的,肯定是相关的函数对象如何投递,如何保存,如何执行了。我们先来看看这一切的基础,operation的实现。 ...(满足min-heap约束) 举例来说: 对于上图这样一个已有的min-heap,当我们插入一个新的值为0的节点时,整个min-heap的调整过程是: 最后得到的min-heap如下: 删除节点(...当我们使用epoll_reactor作为timer scheduler的时候,整体系统的工作流程图如下: 图引用自 深入学习定时器 timer_fd是linux2.6.25加入的功能,这样定时任务也能像其它...区别于winrt_timer_scheduler使用一个额外的线程,使用timer_fd的话,我们则可以利用reactor本身来完成相关的超时等待,不需要额外的线程。

    1.6K10

    WPF 使用 Win2d 渲染

    在当前所有渲染框架里面,做 2D 渲染的,最好的框架是 Win2d 这个提供了大量底层接口封装,不仅性能高同时接口设计非常好 在很久之前,只有在 UWP 等现代应用才能使用 Win2d 而 WPF 是不能使用的...好在微软开放了一些黑科技,可以在 WPF 上使用 Win2d 渲染,下面就让我告诉大家如何在 WPF 上使用 在 2019年7月03日 这个技术还是属于黑科技,还没有正式发布,在开始使用之前,有一定的环境要求...Composition API 做高性能渲染 所说方法搭建代码 搭建出 CompositionHost 和 CompositionHostControl 两个类,然后在 CompositionHostControl...Win2d 顺便还提供了亚克力的功能 其实本文主要不是告诉大家如何写代码,而是如何让官方的代码可以运行 在运行过程可能会遇到以下的坑 如在开始编译的时候提示下面代码 C:\Users\lindexi.github.io...如果使用的是 AnyCpu 编译,那么就需要手动拷贝文件 而 Microsoft.Graphics.Canvas.dll 文件是需要手动拷贝的 手动复制文件的方法是打开自己的本地 .nuget 源,在

    1K20

    .NET周刊【2月第3期 2024-02-25】

    用户可以通过Nuget安装使用,并通过简单的配置与编码使用不同类型的锁,如文件锁、本地锁、数据库锁等。该组件也提供了锁的获取与释放方法。...同时,通过接口和基类的继承方式简化了重复代码,促进了多态性、代码重用及解耦。此外,简单工厂设计模式在创建对象时提供一致性接口,并分离了对象的创建与使用。...他提出了使用XInput API来读取手柄数据的方法,并详细介绍了API函数的使用,以及如何通过XInput获取手柄的状态和按钮。...作者自述因看《Windows核心编程》书籍而有所启示,随后对线程池有了新的认识,并分享了线程池类的源码与实现,比如队列元素、线程池命令枚举、主线程以及如何启动线程池等核心内容,旨在帮助开发者更好地理解和使用...C# - 自建 SDK 的 API 文档 https://www.cnblogs.com/txrock/p/17791189.html 用户在使用类库时,通常需要通过 VS 的 Intellisense

    19610

    肘子的 Swift 周报 #005

    部分原因是因为 Swift 在创建时就把对 Unicode 的支持作为其核心功能之一,另一部分原因是 Unicode 每年都在更新,规范也在变化,语言的开发团队必须持续投入精力来维持对 Unicode...在这篇文章中,Steve Kirbach 首先介绍了 Windows 桌面开发的历史,探讨了在 Windows 上使用 Swift 进行开发的可能性,并提供了一个完整的端到端示例[12],展示了如何使用...在这篇文章中,Javier 对阶段动画的使用方法进行了详尽的介绍,他还指出了在阶段动画中使用 Text 视图可能出现的一个潜在问题,并提供了解决方案。...一切都是静态类型的,并且在安装时即可被 iOS 接收。在本文中,Mark Struzinski 将通过一个完整的示例向你展示如何通过 App Intents 框架为应用添加快捷方式。...PS:SwiftGG 正在筹备 2024 年的面向全亚洲的,全线下的 Apple 开发者生态大会。请关注他们的新网站以获取更多信息:https://swiftgg.team[22] 。

    26150
    领券