使用Reactive Extensions时命名线程

时间:2013-08-01 17:21:57

标签: c# multithreading system.reactive

我经常使用多任务处理,我正在努力将Reactive Extensions添加到我的工具集中。但是我更喜欢命名线程,以便我可以更好地理解当我中断时运行的线程等。通常情况下它会更好。但是,当我使用SubscribeOn和ObserveOn等反应式扩展时,我还没有找到一个命名线程的好方法。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

如果您使用的是NewThreadScheduler,您可以创建一个自定义其创建的Thread的子类,然后在使用ObserveOn或{{1}时使用您的自定义调度程序} ...

SubscribeOn

答案 1 :(得分:1)

使用Rx时,大多数“线程”分为三个阵营:

  1. SubscribeOnObserveOn的目标,它将基于框架指定的SynchronizationContext。如果您使用的是用户界面,这通常会成为“主UI”线程,因此命名主线程将为您提供正确的名称。
  2. ThreadPool线程,实际上不能(或者至少通常不应该)命名,因为它们没有特定的生命周期,它们会出现并消失。如果在ThreadPool线程上引发事件并被观察,则没有好的方法来“命名”这些线程。
  3. 您自己创建的主题,如果您愿意,可以轻松命名。
  4. 由于2/3的选项允许您提供名称,因此您始终可以命名这些线程,然后假设在调试期间监视的任何未命名线程是ThreadPool托管线程。