mpe*_*pen 47 c# multithreading dispatcher
这些都不起作用:
_uiDispatcher.Invoke(() => { });
_uiDispatcher.Invoke(delegate() { });
Run Code Online (Sandbox Code Playgroud)
我想要做的就是在我的主UI线程上调用内联方法.所以我在主线程上调用了这个:
_uiDispatcher = Dispatcher.CurrentDispatcher;
Run Code Online (Sandbox Code Playgroud)
现在我想从另一个线程在该线程上执行一些代码.我该怎么做?我使用了错误的语法吗?
请注意,这不是 WPF应用程序; 我引用了WindowsBase所以我可以访问Dispatcher该类.
the*_*oop 66
问题是您没有提供要调用的确切类型的委托.Dispatcher.Invoke只需要一个Delegate.是一个Action<T>吗?如果是这样,那是T什么?是一个MethodInvoker吗?Action?什么?
如果你的委托没有参数并且什么都不返回,你可以使用Action或MethodInvoker.试试这个:
_uiDispatcher.Invoke(new Action(() => { }));
Run Code Online (Sandbox Code Playgroud)
this.Dispatcher.Invoke((Action)(() => { textBox1.Text = "Test 123"; }));
Run Code Online (Sandbox Code Playgroud)