Scheduler.CurrentThread
/ CurrentThreadScheduler
будет помещать в очередь элементы в том же потоке, который выполнял вызов расписания, который будет потоком, в котором таймер запускается.Вызов Scheduler.CurrentThread
не связывает выполнение элементов, запланированных через него, с потоком, на который вы звоните Scheduler.CurrentThread
, а с потоком, который вызывает .Schedule()
.
Также вы вызываете SubscribeOn()
который влияет только на поток, где будет выполняться вызов .Subscribe()
.Если вы хотите контролировать выполнение обработки элемента, вы скорее хотите вызвать .ObserveOn()
.
Если вы хотите, чтобы все выполнялось в главном потоке, я предлагаю запустить таймер в главном потоке, указавпланировщик на наблюдаемом интервале:
Observable.Interval(TimeSpan.FromSeconds(1), Scheduler.CurrentThread)