将 BeginInvoke 代码从 Winforms 转换为 Wpf
在尝试转换以下代码失败后,我发现 ISynchronizeInvoke 无法在 WPF 中使用。有人可以帮忙吗?
private static void EVENT_R(Delegate @event, object[] data)
{
if (@event != null)
{
foreach (var A_C in @event.GetInvocationList())
{
var NewTp = (ISynchronizeInvoke)A_C.Target;
if (NewTp != null && NewTp.InvokeRequired)
{
NewTp.BeginInvoke(A_C, data);
}
else
{
A_C.DynamicInvoke(data);
}
}
}
}
I have found out that ISynchronizeInvoke cannot be used in WPF after having tried to convert the following code unsuccessfully. Can anybody help?
private static void EVENT_R(Delegate @event, object[] data)
{
if (@event != null)
{
foreach (var A_C in @event.GetInvocationList())
{
var NewTp = (ISynchronizeInvoke)A_C.Target;
if (NewTp != null && NewTp.InvokeRequired)
{
NewTp.BeginInvoke(A_C, data);
}
else
{
A_C.DynamicInvoke(data);
}
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果 NewTp 是
UIElement
,那么您需要转换为UIElement
并调用UIElement.Dispatcher.BeginInvoke
:If NewTp is a
UIElement
, then you need to cast toUIElement
and callUIElement.Dispatcher.BeginInvoke
: