2016-11-11 99 views
0

在App.xaml.cs我有以下代碼8.1的Windows Store應用程序時使用異步

private async void OnCommandsRequested(SettingsPane settingsPane, SettingsPaneCommandsRequestedEventArgs e) 
    { 
     var loader = ResourceLoader.GetForCurrentView(); 

     var generalCommand = new SettingsCommand("General Settings", "General Settings", handler => 
     { 
      var generalSettings = new GeneralSettingsFlyout(); 
      generalSettings.Show(); 
     }); 
     e.Request.ApplicationCommands.Add(generalCommand); 

     object data; 
     IAuthService _authService = new AuthService(); 
     if (Global.UserId == 0) 
      data = await _authService.GetSettingValueBySettingName(DatabaseType.GeneralDb, ApplicationConstants.GeneralDbSettingNames.ShowSupportInfo); 
     else 
      data = await _authService.GetSettingValueBySettingName(DatabaseType.UserDb, ApplicationConstants.UserDbSettingNames.ShowSupportInfo); 

     if (data != null && data.ToString().Equals("1")) 
     { 
      var supportCommand = new SettingsCommand("Support", "Support", handler => 
      { 
       var supportPane = new SupportFlyout(); 
       supportPane.Show(); 
      }); 
      e.Request.ApplicationCommands.Add(supportCommand); 
     } 

     var aboutCommand = new SettingsCommand("About", loader.GetString("Settings_OptionLabels_About"), handler => 
     { 
      var aboutPane = new About(); 
      aboutPane.Show(); 
     }); 
     e.Request.ApplicationCommands.Add(aboutCommand);   

} OnCommandsRequested不添加ApplicationCommands

此代碼將設置「常規設置」,但「支持」或「關於」命令。任何人都可以建議這個代碼有什麼問題嗎?

+0

PS:所有的代碼執行成功,並沒有異常拋出無論是。 – SurenSaluka

回答

1

請求時,不需要查詢服務中的命令,而需要提前查詢它們,然後添加已知的命令。

您不能在OnCommandsRequested中使用await。

一個方法返回到第一個await時返回,所以只有在await之前添加到請求中的命令將被使用。

由於SettingsPaneCommandsRequestedEventArgs不提供延期,因此無法告訴請求者等待內部異步調用完成。

還要注意SettingsPane被廢棄,不建議用於新的應用程序開發用於Windows 10

相關問題