我有以下 2 種方法,當我的 ViewModel 加載時呼叫 CheckForUpdatesExecute(),然后呼叫 GetLAtestVErsionAsync()
private async void CheckForUpdatesExecute()
{
char[] MyChar = { 'v' };
var _latestVersionFull = await GetLatestVersionAsync();
var _latestVersion = _latestVersionFull.TrimStart(MyChar);
Version latestVersion = new Version(_latestVersion);
_updatesAvailable = latestVersion > CurrentVersion;
((DelegateCommand)InstallUpdate).RaiseCanExecuteChanged();
}
private async Task<string> GetLatestVersionAsync()
{
try
{
var client = new HttpClient();
client.DefaultRequestHeaders.Accept.TryParseAdd("application/vnd.github json");
client.DefaultRequestHeaders.UserAgent.TryParseAdd("Test");
var stream = await client.GetStreamAsync("https://api.github.com/repos/<ORG>/<REPO>/releases/latest");
var document = await JsonDocument.ParseAsync(stream);
if (!document.RootElement.TryGetProperty("tag_name", out var tagNameProperty))
{
return "0.0.0.0";
}
return tagNameProperty.GetString();
}
catch
{
return "0.0.0.0";
}
}
如果我在這里設定斷點,我可以看到應用程式崩潰/鎖定,沒有顯示錯誤或例外。
var stream = await client.GetStreamAsync("https://api.github.com/repos/<ORG>/<REPO>/releases/latest");
我曾嘗試將 async void 更改為 async 任務,但據我了解,Task 需要回傳,而我沒有什么可回傳的。
uj5u.com熱心網友回復:
請嘗試更改以下代碼:
var stream = await client.GetStreamAsync("https://api.github.com/repos/<ORG>/<REPO>/releases/latest");
至
var stream = await client.GetStreamAsync("https://api.github.com/repos/<ORG>/<REPO>/releases/latest").ConfigureAwait(false);
請參閱配置等待。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/525453.html
標籤:C#wpf异步空白
上一篇:在反應js上顯示異步api請求
