【发布时间】:2015-11-11 13:08:56
【问题描述】:
使用Squirrel.Windows,我想使用以下代码在我的WPF应用程序的Application Exit handler中处理更新过程:
Task.Run(async () =>
{
using (var mgr = new UpdateManager(Settings.Default.UpdatePath))
{
var release = await mgr.UpdateApp();
if (release != null && release.Version > Assembly.GetEntryAssembly().GetName().Version)
{
MessageBox.Show("Update applied");
}
}
});
如果我在启动时调用此代码,或在执行期间在事件处理程序上调用它,但在这样定义的应用程序退出事件处理程序内,则此代码有效:
app.xaml:
<Application
...
Exit="Application_Exit"
...
app.xaml.cs:
void Application_Exit(object sender, ExitEventArgs e)
{
...
}
这是 Squirrel.Windows 的限制吗?或者有什么特别的事情要做才能使用应用程序退出事件处理程序中提供的代码?
【问题讨论】:
-
您是否等待该任务完成?
async在应用程序退出气味中。 -
试试
Task.Run( .......).Wait();。如果需要,请指定超时。 -
@NETscape 它有效 :) 如果你设置一个答案,我会接受它,谢谢!
-
小心在这里做一个幼稚的等待,应该牢记一些注意事项,如Why Application.Exit event works even if handler is async void in WPF application lifecycle?中所述
标签: c# wpf xaml squirrel.windows