首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【.net 深呼吸】启动一个进程并实时获取状态信息

好,被调用进程项目完成,现在做调用者项目,它是一个WPF项目。在这个时代,写Windows桌面应用都应优先用WPF,因为WPF是牛逼层面的东东。 XAML代码就不贴了,直接讲核心代码。...我用了个进度条来实时显示进度,而Process类的OutputDataReceived事件是异步引发的,要在事件处理中更新进度条,需要借助Dispatcher来代理调用。...不过,在这个例子中并不需要,因为有一个很NX的类,专门用来处理进度的,就是Progress,这个类可以绑定一个回调的委托,用它来更新UI是不需要Dispatcher来调度的,只要Progress实例是在UI线程上创建的即可(忘了说明这句,多谢网友在评论中补充)。...pb.Value = p; }); 在声明变量的时候,应用 IProcess 接口来声明,T是表示进度的类型,Progress类是显示实现了IProgress接口的,为了能够直接调用

97760

浅谈开发中的MVVM模式及与MVP和MVC的区别

作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过 Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter...去年的I/O大会上谷歌介绍了一个非常好用的新框架DataBinding,该框架可以让你将view和一个对象的对field绑定。...当field更新的时候,framework将收到通知,同时view也会自动更新。其语法和使用方式和 JSP 中的 EL 表达式非常类似。...在MVVM中,ViewModel在改变内容之后通知binding framework内容发生了改变。然后framework自动更新和那些内容绑定的view。...具体怎么好用,怎么使用,建议参考我写的《Android 数据绑定框架DataBinding,堪称解决界面逻辑的黑科技》这篇文章。

1.9K100
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    设计模式——组件协作模式之观察者模式

    如果这样的依赖关系过于紧密,将使软件不能很好地抵御变化。 使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系结构的松耦合。...2、模式定义 定义对象间的一种一对多(变化)的依赖关系,以便当一个对象(Subject)的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。...④、修改使得支持多个观察者: 需求:在已支持进度条展示的文件分割器的项目上,增加一个分隔文件时打点的操作 FileSplitter3.cpp //FileSplitter3.cpp class IProgress...就是 FileSplitter,具体的被观察者; ConcreteObserver 对应于 MainForm 和 ConsoleNotifier,具体的观察者。...稳定的:Subject、Observer 变化的:ConcreteSubject、ConcreteObserver 总结 使用面向对象的抽象,Observer 模式使得我们可以独立地改变目标(被观察者)

    17030

    用UWP复习《C#并发编程经典实例》

    简介 C#并发编程经典实例 是一本关于使用C#进行并发编程的入门参考书,使用“问题-解决方案-讨论”的模式讲解了以下这些概念: 面向异步编程的async和await 使用TPL(任务并行库) 创建数据流管道的...IProgress报告进度,使用Progress的event EventHandler ProgressChanged接收进度。...2.10 使用Rx的缓冲统计下载速度 private void OnDownloadData(object sender, int e) { _progress.Report(e); } 当下载进度更新时使用...在UI线程上执行代码时,永远不要使用针对特定平台的类型。...延伸阅读 本书只介绍了使用技术,很少深入讲解内部机制,需要深入理解异步编程可以参考微软的官方文档: 异步编程 使用 Async 和 Await 的异步编程 异步概述 基于任务的异步模式 (TAP

    84710

    观察者模式observer不适用于_观察者模式代码

    观察者模式Obeserver 动机 模式定义 实例 结构图 要点总结 笔记 动机 在软件构建过程中,我们需要为某些对象建立 一种“通知依赖关系” —-一个对象发(目标对象)的状态发生改变,所有依赖的对象...如果这样的依赖关系过于紧密。将使软件不能很好的抵御变化 使用面向对象技术 可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系结构的松耦合。...模式定义 定义对象间的一种一对多(变化)的依赖关系,以便当一个对象(subject)的状态发生改变时,所有依赖于它的对象都得到通知并自动更新 实例 实现进度条 朴素实现 class MainForm :...} } } 结构图 要点总结 使用面向对象的抽象,Obeserver模式使得我们可以独立改变目标与观察者,从而使两者之间的关系达到松耦合 目标发送通知时,无需指定观察者,通知(可以携带通知信息作为参数...高层和底层都应该依赖于抽象 抽线不能依赖实现 实现应该依赖抽象 依赖:指的是编译时依赖 A依赖B B必须存在 A才能通过编译 独立一般指 你变我不变 松耦合 发布者:全栈程序员栈长,转载请注明出处:https

    62730

    16:几个常见的TAP异步操作

    以下文章来源于精致码农 ,作者liamwang 在本系列上一篇文章 [15:异步编程基础] 中,我们讲到,现代应用程序广泛使用的是基于任务的异步编程模式(TAP),历史的 EAP 和 AMP 模式已经过时不推荐使用...当任务在 Canceled 状态下完成时,任何在该任务注册的延续任务仍都会被调用和执行,除非指定了诸如 NotOnCanceled 这样的选项来选择不延续。...在 TAP 中,进度是通过 IProgress 接口来处理的,该接口作为一个参数传递给异步方法。...例如,消费代码可能只关心最新的进度更新,或者希望缓冲所有更新,或者希望为每个更新调用一个操作,等等。所有这些选项都可以通过使用该接口来实现,并根据特定消费者的需求进行定制。...当然,这种死锁的情况只会在 Winform 和早期的 ASP.NET WebForm 中才会发生,在 Console 和 Web API 应用中不会生产死锁。

    80610

    Unity3D MVVM开源框架 Loxodon Framework

    我参考了WPF和Android的MVVM设计,所以在使用上以及类和接口的命名上与他们也都非常类似,我在项目中提供了大量的示例,很容易上手,对于熟悉MVVM的朋友入门门槛会更低。...在WPF中是使用XAML来配置UI的,所以数据绑定也在XAML中配置,在Unity3D中,因为考虑到性能问题以及与Unity3D中UGUI的耦合问题,我没有采用这种XML的配置方式,而是使用脚本绑定的方式...所有代码都基于面向对象面向接口的思路设计,几乎所有功能都可以自定义,很多接口我提供了多种实现,用户可以自由选择来使用,一般大众化的需求只需要使用我的默认实现即可,对于有特殊需求或者想扩展其他功能的用户,...Tested in Unity 3D on the following platforms(已测试过的平台): PC/Mac/Linux IOS Android UWP(window10) Key Features...(消息系统,订阅和发布); Preferences can be encrypted(可加密的配置文件); Localization support(本地化支持,与Android的本地化支持类似); Databinding

    5.2K10

    WPF MVVM实例三

    在没给大家讲解wpf mwm示例之前先给大家简单说下MVVM理论知识: WPF技术的主要特点是数据驱动UI,所以在使用WPF技术开发的过程中是以数据为核心的,WPF提供了数据绑定机制,当数据发生变化时,...WPF会自动发出通知去更新UI。   ...在WPF开发中,经典的编程模式是MVVM,是为WPF量身定做的模式,该模式充分利用了WPF的数据绑定机制,最大限度地降低了Xmal文件和CS文件的耦合度,也就是UI显示和逻辑代码的耦合度,如需要更换界面时...与WinForm开发相比,我们一般在后置代码中会使用控件的名字来操作控件的属性来更新UI,而在WPF中通常是通过数据绑定来更新UI;在响应用户操作上,WinForm是通过控件的事件来处理,而WPF可以使用命令绑定的方式来处理...Views: 由Window/Page/UserControl等构成,通过DataBinding与ViewModels建立关联; ViewModels:由一组命令,可以绑定的属性,操作逻辑构成;因为View

    84620

    WPF 像素着色器入门:使用 Shazzam Shader Editor 编写 HLSL 像素着色器代码

    目标框架 Target Framework WPF 自 .NET Framework 4.0 开始支持 PS_3,当然也包括现在的 .NET Core 3.x 和后续的全版本 .NET。...如果你正在写的 HLSL 代码指令数刚好超过 PS_2 的限制(64 条指令)不太多,可以参考我在另一篇博客中的优化方式: 关于 PS_3 相比于此前带来的更新可以查看微软的官方文档了解:ps_3_0...预览调节窗格 确保你刚刚使用 F5 编译了你的 HLSL 代码。这样,你就能在这个窗格看到各种预览调节选项。 你可以直接拉动拉杆调节参数范围,也可以直接开启一个动画预览各种值的连续变化效果。...如果你使用的是旧的项目格式,则右键此 .ps 文件的时候选择属性,你可以在 Visual Studio 的属性窗格的生成操作中将其设置为 Resource。...WPF 程序中使用这个特效 要在 WPF 程序中使用这个特效,则设置控件的 Effect 属性,将我们刚刚生成的像素着色器对应 C# 代码的类名写进去即可。

    96720

    PC端自动化测试(一)

    PC端自动化测试(一) pywinauto:同时支持控件操作和图像操作,支持Win32 API和MS UI Automation API A set of Python modules to automate...应用程序的可访问技术 支持控件的访问技术 Win32 API(backend=“win32”) 默认的backend MFC,VB6,VCL简单的WinForms控件和大多数旧的应用程序 MS UI Automation...API(backend=“uia”) WinForms,WPF,Store apps,Qt5,浏览器 进程数量 单进程 Application作用范围是一个进程 跨进程 Desktop作用范围可以跨进程...选择指定的窗口 # 方式一:app[类名/标题] :推荐使用该方式 # 1.通过窗口类型来选择dlg = app["TNavicatMainForm"] # 2.通过窗口标题来选择dlg = app["...rect = dlg.rectangle()print(rect)# (L548,T194,R1768,B1043) # 关闭窗口dlg.close() 选择控件 控件:窗口上的内容 # 选择控件 #

    4K61

    WPF 制作高性能的透明背景异形窗口(使用 WindowChrome 而不要使用 AllowsTransparency=True)

    这样的设置会让窗口变成 Layered Window,WPF 在这种类型窗口上的渲染性能是非常糟糕的。...如果你有留意到我的其他博客,你会发现我定制窗口样式的时候都在极力避开设置此性能极差的属性: WPF 使用 WindowChrome,在自定义窗口标题栏的同时最大程度保留原生窗口样式(类似 UWP/Chrome...值得注意的是,由于在使用 WindowChrome 制作透明窗口的时候设置了 ResizeMode="None",所以你拖动窗口在屏幕顶部和左右两边的时候,Windows 不会再帮助你最大化窗口或者靠边停靠窗口...这两种实现的窗口之间还有一些功能上的区别: 方案 WindowChrome AllowsTransparency 点击穿透 在完全透明的部分点击依然点在自己的窗口上 在完全透明的部分点击会穿透到下面的其他窗口...然而,如果你希望在使用高性能的 WindowChrome 时也依然能点击穿透,那么你需要使用到一点点的小技巧来绕过 WPF 对 WS_EX_LAYERED 窗口样式的锁定。

    1.7K20

    WPF随笔(十)–使用AvalonDock实现可停靠式布局「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。 我们每天使用的许多软件都使用了可停靠式布局,可以方便的打开、关闭、收起、展开、移动选项卡。...除了AvalonDock,Extended.Wpf.Toolkit套件中还包含了Xceed.Wpf.DataGrid和Xceed.Wpf.Toolkit,有兴趣的 也可以了解下。...层级结构 结合上面的示例和官方文档的说明,使用AvalonDock时的页面元素结构大体如下: 各个类的说明如下: 名称 说明 DockingManager 停靠管理器,核心控件,负责管理浮动窗体...当一个窗格关闭时,会将其放置在Hidden集合中。...LayoutAnchorable和LayoutDocument内包含的就是实际内容了,可以是WPF控件或自定义控件。

    4.2K30

    C# 高级:TAP 异步编程

    使用 .NET 基于 Task 的异步模型可以直接编写 I/O 受限和 CPU 受限的异步代码。该模型围绕着 Task 和 Task 类型以及 C# 的 async 和 await 关键字展开。...使用 async 和 await 只是为你提供了一种干净的方式来与后台线程进行交互。请注意,这并不能为共享数据提供加锁保护,如果你正在使用共享数据,仍然需要使用适当的同步策略。...基于任务的异步模式(Task-based Asynchronous Pattern,TAP),它使用单一的方法来表示异步操作的启动和完成。TAP 是在 .NET Framework 4 中引入的。...在 TAP 中,进度是通过 IProgress 接口来处理的,该接口作为一个参数传递给异步方法。...例如,消费代码可能只关心最新的进度更新,或者希望缓冲所有更新,或者希望为每个更新调用一个操作,等等。所有这些选项都可以通过使用该接口来实现,并根据特定消费者的需求进行定制。

    1.1K20

    MVVM 架构模式:解耦、可测试与高效

    单向绑定 vs 双向绑定 在某些场景下,我们只希望 View 显示数据,而不希望 View 更新 ViewModel 的数据,这时候我们可以使用 单向绑定。...像 Vue.js、Angular 和 Knockout.js 这样的框架都使用了 MVVM 模式,它们提供了强大的数据绑定机制,使开发者可以专注于业务逻辑而不需要手动管理 DOM 更新。...移动端开发 在移动端,像 Android 的 DataBinding 和 Jetpack Compose 都使用了类似于 MVVM 的模式。通过这种模式,可以大大减少 UI 与业务逻辑之间的耦合度。...桌面应用 MVVM 也在桌面应用中广泛应用,比如 WPF 和 UWP 等技术栈,它们都采用了 MVVM 模式来管理复杂的 UI 与逻辑交互。...通过合理使用 双向绑定和单向绑定,我们可以在灵活性和复杂性之间取得平衡。 MVVM 的优势在于解耦、可测试性和扩展性,如果你正在开发一个复杂的前端或移动应用,不妨试试这种架构模式。

    59710

    WPF 开启Pointer消息存在的坑

    本文记录在 WPF 开启 Pointer 消息的坑 屏幕键盘 启用了Pointer之后,调用Textbox.Focus(),起不来屏幕键盘,必须点在它之上才行,触摸在它之上才行 使用屏幕绝对坐标而不是窗口坐标...message · Issue #3379 · dotnet/wpf 但预计不会在 WPF 中修复,原因是这是 Windows 的 WM_Pointer 机制的坑,和 WPF 其实没有关系 另一个解决方法是在关闭系统全局触摸反馈点...这一套是和 Pointer 一起提出的,我问了微软的大佬,收到了 MVP 内部邮件,可惜我没看明白,大概的意思是这个交互是 Win10 提供的,和 Pointer 走的是差不多的逻辑 这也就导致了原本支持互斥独占的触摸交互...修复方法是在 PointerLogic.cs 的逻辑也调用 MouseDevice.cs 的 PushActivateInputReport 方法激活交互 此问题已修复,参阅 Port touch activation...fix from 4.8 by SamBent · Pull Request #5836 · dotnet/wpf 对应在 2022 的一月系统质量更新补丁,如 50088XX 系列补丁,参阅 https

    85930

    Xamarin.Form 5.0: 新功能和控件以及调试改进

    通过最新的 Visual Studio 更新,调试体验在许多领域得到了改进,尤其是在 Xamarin 应用程序开发期间。...与一年前发布的第一个版本相比,该功能已被重写,同时采用通用 Windows 平台 (UWP) 和 Windows 演示基金会 (WPF) 的 XAML 热重新加载体系结构。...根据开发人员社区的反馈,现在可以 Xamarin.Forms 与UWP 应用一起使用热重载和热重启,并部分刷新修改后的页面(这是 Visual Studio 调试设置中的可配置选项)。 ?...其他已宣布的功能包括实时可视化树(它有助于在开发过程中可视化应用中的元素结构)和 XAML 绑定诊断窗格,该窗格显示哪些 XAML 绑定不正确,需要修复。...其中一些已经在去年的预览: 画笔:使用纯色、线性渐变和径向渐变来着色应用程序 UI 的颜色区域; 形状:绘制形状,如椭圆、线、面、折线和矩形; 路径:绘制自定义形状或设计。

    3.3K20

    使用HLSL实现百叶窗动效

    百叶窗动画是制作PPT时常用的动画之一,本文将通过实现百叶窗动画效果的例子介绍在WPF中如何使用ShaderEffect。...这里使用一个已有的的HLSL文件,也是后边将介绍的一个HLSL编辑器工具Shazzam Shader Editor中的案例。 定义像素着色器,在UI元素中使用像素着色器,并通过动画设置百叶窗动画。...使用百叶窗效果时,只需在resources中添加着色器和动画,并对目标UI元素的Effect设置为百叶窗动画。...但是Shazzam Shader Editor是一个免费的专门为 WPF 实现像素着色器而设计的一款编辑器,使用它来编写像素着色器,可以自动生成WPF中的ShaderEffect。...在WPF中使用时,需把XXX.ps文件以Resource的形式添加到工程中,然后把XXX.cs文件添加到工程,并根据项目结构,修改XXX.cs中引用XXX.ps文件的路径即可。

    28010

    使用 WPF 开发一个 Windows 屏幕保护程序

    使用 WPF 开发一个 Windows 屏幕保护程序 2018-12-22 02:24 最近有小伙伴问我如何可以让 Windows 静置一段时间不操作之后...还有其他参数,用于处理其他情况: /s 屏幕保护程序开始,或者用户点击了 “预览” 按钮 /c:463970 用户点击了 “设置” 按钮 /p 8457636 用户选中屏幕保护程序之后,在预览窗格中显示...实际上屏幕保护程序开始和预览是不同的。预览的时候,只会启动你的程序;而实际开始的时候,Windows 会先为你创建一个白色的背景,覆盖所有的屏幕,然后你的屏幕保护程序窗口显示在那个白色的背景之上。...请预防一些坑 你可能会发现 Windows 自带的屏幕保护程序在 C:\Windows\System32 文件夹中。但!那不是你放屏幕保护程序的地方!...---- 参考资料 Create a screensaver with .NET and WPF 本文会经常更新,请阅读原文: https://blog.walterlv.com/post

    1.4K20
    领券