我已经获得了一些代码来处理调度程序在其构造函数中传递给视图模型的位置.我现在想知道我是否应该使用ObserveOn(dispatcher),或者dispatcher.Invoke(...)当我想在UI线程上执行某些操作时.
例如,我可以这样做:
this.WhenAny(me => me.SomeValue, _ => Unit.Default)
.ObserveOn(dispatcher)
.Subscribe(_ => SomeMethod());
...
private void SomeMethod()
{
//do some stuff
}
Run Code Online (Sandbox Code Playgroud)
或者我可以这样做:
this.WhenAny(me => me.SomeValue, _ => Unit.Default)
.Subscribe(_ => SomeMethod());
Run Code Online (Sandbox Code Playgroud)
这意味着我可以这样做:
private void SomeMethod()
{
dispatcher.Invoke(new Action(() =>{//do some stuff});
}
Run Code Online (Sandbox Code Playgroud)
两者之间有什么重大区别吗?
我担心的是,如果我想在代码的其他部分调用SomeMethod(),这不是由SomeValue更改引发的?然后我需要做dispatcher.invoke(new Action(() => someMethod()));,这让我觉得使用dispatcher.Invoke(...)内部SomeMethod是最好的选择.
这是好事还是坏事?在那一刻,我正在均匀地使用这两种技术.我打算转到其中一个,但想先知道正确的方法.