gpt4 book ai didi

c# - 使用匿名方法调用 WPF Dispatcher

转载 作者:太空狗 更新时间:2023-10-29 17:31:00 26 4
gpt4 key购买 nike

我刚刚在 C# .Net 4.0 WPF 后台线程中意识到这不起作用(编译器错误):

Dispatcher.Invoke(DispatcherPriority.Normal, delegate()
{
// do stuff to UI
});

从一些示例中我发现它必须像这样转换:(Action)delegate()。但是,在其他示例中,它被强制转换为其他类,例如System.Windows.Forms.MethodInvoker

谁能告诉我上面的例子究竟有什么问题?我也尝试用其他方法重现它,但它总是在没有转换的情况下工作:

delegate void MyAction();
void Method1(MyAction a) {
// do stuff
}

void Method2(Action a) {
// do stuff
}

void Tests()
{
Method1(delegate()
{
// works
});

Method2(delegate()
{
// works
});

Method1(() =>
{
// works
});

Method2(() =>
{
// works
});

Method2(new Action(delegate()
{
// works
}));

new System.Threading.Thread(delegate()
{
// works
}).Start();
}

那么什么是调用 Dispatcher 的最佳(最优雅、更少冗余)方法,它有什么特别之处以至于必须强制转换委托(delegate)?

最佳答案

我想指出比 Svick 的更清晰的代码示例,毕竟我们都喜欢一个衬垫,不是吗?

Dispatcher.Invoke((Action) delegate { /* your method here */ });

关于c# - 使用匿名方法调用 WPF Dispatcher,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6245744/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com