【发布时间】:2013-08-01 17:21:57
【问题描述】:
我经常使用多任务处理,并且正在努力将反应式扩展添加到我的工具集中。但是,我更喜欢命名线程,以便我可以更好地了解当我中断等时正在运行的线程。总的来说,它会更好。但是,当我使用带有 SubscribeOn 和 ObserveOn 等的响应式扩展时,我还没有找到一种命名线程的好方法。
有什么想法吗?
【问题讨论】:
标签: c# multithreading system.reactive
我经常使用多任务处理,并且正在努力将反应式扩展添加到我的工具集中。但是,我更喜欢命名线程,以便我可以更好地了解当我中断等时正在运行的线程。总的来说,它会更好。但是,当我使用带有 SubscribeOn 和 ObserveOn 等的响应式扩展时,我还没有找到一种命名线程的好方法。
有什么想法吗?
【问题讨论】:
标签: c# multithreading system.reactive
如果您经常使用NewThreadScheduler,您可以创建一个自定义它创建的Thread 的子类,然后在使用ObserveOn 或SubscribeOn 时使用您的自定义调度程序...
// created threads will have names prefixed with "bob"
someObservable.ObserveOn(new CustomNewThreadScheduler("bob"))...
【讨论】:
在使用 Rx 时,大部分“线程”分为三个阵营:
SubscribeOn 或ObserveOn 的目标,将基于框架指定的SynchronizationContext。如果您使用的是用户界面,这通常是“主 UI”线程,因此命名主线程将为您提供正确的名称。由于 2/3 的选项允许您提供名称,因此您始终可以为这些线程命名,然后假定在调试期间观察到的任何未命名线程都是 ThreadPool 托管线程。
【讨论】: