wpf 如何为F#异步工作流创建STA线程

rks48beu  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(95)

我试图使用WPF控件在F#中编写一个打印表单--并且是在异步工作流中完成的。由于我是新手,所以我不知道如何将由F#异步块使用的wpf控件放在STA线程上,而不阻塞主线程。
我有很多打印的表格,不想阻塞主线。
如何为F#异步工作流创建STA线程?
提前感谢您的帮助。

t9aqgxwy

t9aqgxwy1#

在纯WPF中,我不认为您有STA --这个概念来自COM模型。您所拥有的是一个特定的UI线程,它必须用于与UI进行通信。要获得该线程,您可以在确定您在UI线程上时使用SynchronizationContext.Current属性(例如,在事件处理程序中)。注意:如果SynchronizationContext.Currentnull,则您将在线程池中运行,而不是在UI线程上运行。
如果随后将该SynchronizationContext对象传递到async {}代码中,则应该能够通过调用Async.SwitchToContext重新加入UI线程

相关问题