跳到主要内容

线程与界面

内核在 IO 线程和线程池上工作,不会假定你使用 WinForms 还是 WPF。

  • DataReceivedStateChanged 可能在非 UI 线程触发。
  • 更新控件前必须切换到 UI 线程。请使用适配器,而不是在每个窗口里手写 Invoke
  • 不要在事件回调里做长时间阻塞,以免耽误接收。
程序集线程切换常用 API
Zeus.Presentation.WinFormsControl.BeginInvokeAttachZeusBindTo
Zeus.Presentation.WpfDispatcher.BeginInvokeAttachZeusBindToAsBindingSource
Zeus.Presentation.AbstractionsIUiDispatcher测试可用 ImmediateUiDispatcher

内核和 Zeus.Presentation.Abstractions 不引用桌面框架。

如果必须自己订阅事件,WinForms 使用 BeginInvoke,WPF 使用 Dispatcher。窗口关闭后不要再改控件。