gpt4 book ai didi

c# - 如何等待 Dispatcher Invoke 的结果?

转载 作者:行者123 更新时间:2023-12-05 08:33:30 26 4
gpt4 key购买 nike

我想我在这里遗漏了一些东西。我有一个 WPF 表单,上面有一些我需要从外部源(通常在非 UI 线程上)调用的方法。我检索了对表单的引用,然后尝试通过 Dispatcher.Invoke 调用该方法,以便将其编码到 UI 线程。问题是这段代码将无法工作,因为 Invoke 会触发一个 Action,所以结果总是一个空字符串(即使文档说 Invoke 应该是同步的)。

    public string GetValueById(string id, string value)
{
Application.Current.Dispatcher.Invoke(() =>
{
var main = Application.Current.MainWindow as MainWindow;
if (main != null)
{
return main.GetValue(id);
}
});
return "";
}

我无法完全理解如何完成这项工作。

最佳答案

如果你看the documentation for that Dispatcher.Invoke overload ,你会看到如果你传递一个 Func<TResult>回调然后它将返回 TResult通过执行该回调返回。您所要做的就是实际使用返回值:

public string GetValueById(string id, string value)
{
return Application.Current.Dispatcher.Invoke(() =>
{
var main = Application.Current.MainWindow as MainWindow;
if (main != null)
{
return main.GetValue(id);
}
});
}

关于c# - 如何等待 Dispatcher Invoke 的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39438441/

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