gpt4 book ai didi

.net - 使用 Reactive Extensions (Rx) 调度程序时创建 STA 线程

转载 作者:行者123 更新时间:2023-12-01 13:57:35 25 4
gpt4 key购买 nike

我需要一个 STA 线程与 Observable.Create 一起使用(调度程序是使用 SubScribeOn 方法定义的)。我的问题是在 Rx 中创建 STA 线程的最佳方式是什么。

目前我使用 NewThreadScheduler 进行以下操作,但我可以改用 EventLoopScheduler。

哪个更适合创建 STA 线程?

Func<ThreadStart, Thread> func = x =>
{
var thread = new Thread(x) { IsBackground = true };
thread.SetApartmentState(ApartmentState.STA);

return thread;
};

return new NewThreadScheduler(func);

.Net 版本:4.0 (WPF)

接收版本:2.0.21103.1

最佳答案

EventLoopSchedulerNewThreadScheduler 都可以,具体取决于您的需要。区别本质上是这样的:

  1. EventLoopScheduler 采用单线程异步;即,一个专用的后台线程。如果您创建此调度程序的实例并将其传递给许多运算符,则这些运算符调度的所有操作(包括但不限于对 OnNext 的调用)都会排队并序列化到单个线程中.
  2. NewThreadScheduler 采用并发。作为一项优化,重叠的通知将出现在同一个线程上,但您不应依赖于此。

关于.net - 使用 Reactive Extensions (Rx) 调度程序时创建 STA 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25993482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com