提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|行业资讯|编辑:董玉霞|2022-09-08 16:47:38.650|阅读 120 次
概述:本文将为大家介绍具有 LightningChart.NET数据可视化控件的多线程应用程序。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
本文将为大家介绍具有 LightningChart.NET数据可视化控件的多线程应用程序。
使用后台线程让应用程序平稳运行确实会产生很大的不同。
将非必要进程卸载到一个或多个后台线程有助于保持应用程序的 UI 响应迅速。
但是,与单线程程序相比,多线程程序需要更多的精力来开发。线程的粗心使用是导致细微错误的一个重要原因,这可能需要花费大量时间来定位。
本文旨在帮助理解多线程图表应用程序并解释 .NET 多线程的一些概念,特别是应如何在多线程程序中使用图表控件LightningChart .NET 。
这是一个例子:
大多数操作系统对涉及用户界面的代码使用单线程模型。该模型对于正确排序用户界面事件(包括击键和触摸输入)是必要的。
该线程通常称为主线程、用户界面线程或UI 线程。严格来说,.NET对前景和背景的分类是不同的。
但在本文中,我们将非 UI 线程称为后台线程。
了解多线程图表应用程序可以提高应用程序的性能,但对 UI 控件的访问本身并不是线程安全的。
多线程可以将您的代码暴露给严重和复杂的错误。操作控件的两个或多个线程可能会强制控件进入不一致的状态并导致竞争条件、访问冲突、死锁以及冻结或挂起。
如果您在应用程序中实现多线程,请确保您以线程安全的方式调用跨线程控件。
UI 库(Windows 窗体、WPF 和 UWP)的设计方式是只能从 UI 线程访问 UI 元素。Windows 这样做是为了确保 UI 控件的完整性。
LightningChart® .NET 控件是一个 UI 元素。因此,适用相同的线程安全规则。与其他所有 UI 控件一样,它要求所有 LightningChart 属性都应在UI 线程中更新。
在应用程序中使用后台线程时,来自线程的所有 UI 更新都必须通过Invoke(WinForms 中的Control.Invoke()和 WPF 中的Dispatcher.Invoke())。这两种方法都安排一个委托执行。
WPF 调度程序更加灵活,因为它允许用户在向调度程序队列添加元素时指定队列优先级。
这种多线程应用程序设计在我们的演示中的以下ExampleThreadMultiChannel中进行了演示。
我们经常使用这种设计,因为它非常适合在多个线程上分配计算以及尽可能快地更新图表。
这个想法是有一个后台线程来读取/收集/生成新数据并通过Invoke()调用推送一些“新点” 。
演示(交互式示例应用程序)示例显示了线程安全图表更新和后台线程用于数据生成的使用情况。
LightningChart 渲染的原理很简单。每当用户添加数据(或修改属性)时,都会呈现图表。
该过程涉及大量处理,包括并行循环计算、对象处置、相关属性的更新、对象的重新创建等。
出于这个原因,只有一个线程应该更新和读取图表——串行/同步执行。
这是客户端对消息的内部操作的示意图,其中显示了命名管道和后台线程。
对于标准桌面应用程序,LightningChart 线程与主 UI 线程相同。但是,该线程不一定是主 UI 线程。
Headless 模式允许图表在后台线程中运行,但所有更新都应通过创建图表的同一线程。
另一个用例是,例如,当应用程序可能有多个窗口,并且每个窗口可能有自己的线程时。对于这种情况,LightningChart 被允许使用它被添加到的窗口的线程(这可能是与在主应用程序窗口上运行的线程不同的线程)。
这种设计在我们的测试台示例中实现,如下图所示:
多窗口——多线程方法。
值得注意的是,Dispatcher/Control 有两个类似的方法:Invoke() 和 BeginInvoke()。这两种方法都安排一个委托执行。
另一方面(在 LightningChart .NET 的情况下)通过BeginInvoke 更新图表,用户立即获得响应式 UI。
然而,另一方面,当实际渲染发生时,应用程序的信息有限。通过更改图表更新类型可以实现类似的效果,其中:
LightningChart 是一个 UI 元素。因此,为了线程安全,应在UI Thread中更新所有 LightningChart 属性。欢迎加入LightningChart技术交流群,获取最新产品咨询:740060302
想要了解或购买LightningChart 正版授权的朋友,欢迎咨询。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
本文将为大家深入介绍QtitanDataGrid组件,看看它是如何为Qt开发提供强大的数据表格解决方案的,欢迎下载最新版组件体验!
在现代工业自动化领域,OPC协议在设备、系统和软件之间的数据交换中发挥着重要作用。随着技术的进步,传统的OPC DA协议逐渐暴露出一些不足,比如跨平台支持差、安全性不足等问题,OPC UA作为其升级版应运而生,具有更强的灵活性、安全性和跨平台能力。那么,如何将原本使用OPC DA的系统或设备迁移到OPC UA协议呢?
在工业自动化领域,OPC协议被广泛应用,它帮助不同品牌、不同类型的设备和系统之间实现数据交换。OPC协议有多个版本,其中最常见的有OPC DA和OPC UA。虽然它们都属于OPC协议家族,但这两者有许多重要的区别。那么,OPC DA和OPC UA究竟有什么不同?
高性能WPF和Winforms图表,可以实时可视化多达1万亿个数据点。
LightningChart JS高性能的JavaScript图表库,专注于实时数据可视化。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢