gpt4 book ai didi

c# - Application.Current 和 App.Current 为空

转载 作者:行者123 更新时间:2023-11-30 18:19:07 27 4
gpt4 key购买 nike

我正在创建一个应用程序(Outlook 的 Office 加载项)

我遇到的问题是更新我的屏幕。我知道我需要调用 Dispatcher,但是它在我的 ViewModel

中始终为 null
    private ObservableCollection<string> _updates;
public ObservableCollection<string> Updates
{
get { return this._updates; }
set
{
this._updates = value;
OnPropertyChanged("Updates");
}
}


BackgroundWorker bw = new BackgroundWorker();
bw.DoWork += ((s, e) =>
{
//logic
UpdateProgress("Finished");
});

bw.RunWorkerAsync();


private void UpdateProgress(string s)
{
//Application.Current.Dispatcher.Invoke(() =>
// {
App.Current.Dispatcher.Invoke(() =>
{
this.Updates.Add(s);
//});
});
}

如您所见,我尝试了 2 种方法,但 Current 始终为 null。

奇怪的是,如果我在 MainWindow 的后面的代码中使用相同的代码,那么下面的代码可以正常工作

    private void UpdateProgress(string s)
{
Dispatcher.Invoke(() =>
{
this.Update = s;
});
}

我看过了,原因是后面的MainWindow代码继承自Window。

我的问题是,我是否必须创建一个新的 Dispatcher 对象,或者我是否遗漏了什么。我要做的就是在线程运行时更新我的​​ GUI。

最佳答案

Hans Passant 在评论中回答

The normal entrypoint for a WPF is Main(). Which is auto-generated to create your App.xaml class instance, hard to see. The entrypoint is no longer Main() in an add-in, it is now you Startup event handler. So you have to create your app instance yourself. Boilerplate code is http://stackoverflow.com/a/2694710/17034

Application.Current and App.Current is null

关于c# - Application.Current 和 App.Current 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39644256/

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