使用后台线程让应用程序平稳运行确实会产生很大的不同。将非必要进程卸载到一个或多个后台线程有助于保持应用程序的 UI 响应迅速。
但是,与单线程程序相比,多线程程序需要更多的精力来开发。 不当的线程使用是导致细微错误的一个重要原因,这可能需要花费大量时间来定位。
本文旨在帮助理解多线程图表应用程序并解释 .NET 多线程的一些概念,特别是应如何在多线程程序中使用 LightningChart .NET 控件。
下图是例子:
Visual Studio 中多线程应用程序的 Parallel Stacks 窗口示例
大多数操作系统对涉及用户界面的代码使用单线程模型。 该模型对于正确排序用户界面事件(包括击键和触摸输入)是必要的。
该线程通常称为主线程、用户界面线程或 UI 线程。 严格来说,.NET 对前端和后端的分类是不同的。
但在本文中,我们将把非 UI 线程称为后台线程。
了解多线程图表应用程序可以提高应用程序的性能,但对 UI 控件的访问本身并不是线程安全的。
多线程可以将您的代码暴露给严重和复杂的错误。 操作控件的两个或多个线程可能会强制控件进入不一致的状态并导致竞争条件、访问冲突、锁死以及冻结或挂起。如果您在应用程序中实现多线程,请确保您以线程安全的方式调用跨线程控件。
UI 库(Windows 窗体、WPF 和 UWP)的设计方式是,只能从 UI 线程访问 UI 元素。 Windows 这样做的目的是是为了确保 UI 控件的完整性。LightningChart® .NET 控件是一个 UI 元素。 因此,适用相同的线程安全规则。 与其他所有 UI 控件一样,它要求所有 LightningChart 属性都应在 UI 线程中更新。
在应用程序中使用后台线程时,来自线程的所有 UI 更新都必须通过 Invokeÿ