异步任务使应用程序崩溃



我有以下两个方法,当我的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,但据我所知,task需要返回,而我没有什么可返回的。

请尝试更改以下代码:

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);

请参阅ConfigureAwait。

最新更新