gpt4 book ai didi

c# - WPF - 尝试在任务中打开一个新窗口但收到 "The calling thread must be STA exception"

转载 作者:行者123 更新时间:2023-11-30 20:35:40 25 4
gpt4 key购买 nike

这是我的第一篇文章,如有错误请见谅。

我有一个返回字符串的任务。在该任务中,我想打开一个新窗口,用户可以在其中输入代码。输入代码并关闭窗口后,任务将返回代码。

我的代码如下:

 public Task<string> GetLoginCode()
{

return Task.Run(() =>
{
CodeRequestView view = new CodeRequestView();
CodeRequestViewModel viewModel = new CodeRequestViewModel();
view.ShowDialog();
return viewModel.Code;
});

}

我遇到的问题是,当我运行我的项目时,我收到“调用线程必须是 STA,因为许多 UI 组件需要这个。” CodeRequestView.xmal.cs 文件的构造函数中出现异常。

如能提供解决此问题的帮助,我们将不胜感激。谢谢!

最佳答案

当您从非 UI 线程调用 UI 时,您可以使用 UI 线程,例如 Dispatcher

  public Task<string> GetLoginCode()
{

return Task.Run(() =>
{
CodeRequestViewModel viewModel = new CodeRequestViewModel();
Application.Current.Dispatcher.Invoke(delegate
{
CodeRequestView view = new CodeRequestView();
view.ShowDialog();
});
return viewModel.Code;
});
}

关于c# - WPF - 尝试在任务中打开一个新窗口但收到 "The calling thread must be STA exception",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37648693/

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