【问题标题】:Manage update in Application Exit在应用程序出口中管理更新
【发布时间】: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 的限制吗?或者有什么特别的事情要做才能使用应用程序退出事件处理程序中提供的代码?

【问题讨论】:

标签: c# wpf xaml squirrel.windows


【解决方案1】:

由于您正在创建一个立即运行的“热”Task,它将继续执行下一行代码。大概,下一行代码是应用程序退出处理程序的结尾。如果您想防止这种情况发生,请执行以下操作:

Task.Run(async () =>
{
  //do stuff here
}).Wait();

您可以通过向Task.Wait 提供适当的参数来使用超时/取消功能

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多