2013-08-01 39 views
3

我使用了多任務,並且正在努力將Reactive Extensions添加到我的工具集中。不過,我更喜歡命名線程,以便我可以更好地理解當我休息時運行的線程等。總的來說,它只是更好。然而,我還沒有找到一個好方法來命名線程,當我使用SubscribeOn和ObserveOn等被動擴展。使用Reactive Extensions時命名線程

任何想法?

回答

4

如果您使用的是NewThreadScheduler很多,你可以做它的一個子類,定製它創建,然後使用ObserveOnSubscribeOn時使用自定義調度的Thread ...

// created threads will have names prefixed with "bob" 
someObservable.ObserveOn(new CustomNewThreadScheduler("bob"))... 
+0

這正是我過去我已經完成了,但是當我切換到Release時,我換回了池。 – JerKimball

1

使用的Rx,大部分的「線程」的分爲三個陣營:

  1. SubscribeOnObserveOn的目標,這將是基於框架的規定SynchronizationContext。如果您使用的是用戶界面,這通常是「主用戶界面」線程,因此命名主線程將爲您提供正確的名稱。
  2. ThreadPool線程,實際上不能(或至少通常不應該)被命名,因爲它們沒有出現和消失的特定生命週期。如果一個事件在ThreadPool線程上產生並被觀察到,那麼就沒有好辦法來「命名」這些線程。
  3. 您自己創建的線程,如果您願意,可以輕鬆命名。

由於2/3的選項允許您提供名稱,因此您可以始終命名這些線程,然後假定在調試期間監視的任何未命名的線程都是一個ThreadPool管理的線程。

相關問題