в асинхроне зависает намертво. В синхронном варианте всё выполняется моментально (настройка пока одна всего).
Звучит как дедлок, но с фига ли? Ничего замысловатого не происходит и других тредов в этот момент вроде. Хотя я не уверен как проверить.
В отладке результирующий таск говорит Evaluation is not allowed when the thread is in 'Wait' state
internal static async Task<IEnumerable<UserSetting>> GetAllAsync()
{
var directory = new DirectoryInfo(SettingsFolder);
var queryresult = await Task.Run(() =>
from file in directory.GetFiles()
let value = file.OpenText().ReadToEnd()
let deserialized = JsonConvert.DeserializeObject<UserSetting>(value, SerializerSettings)
select deserialized
);
return queryresult;
}
зачем вам Task.Run внутри Task? и вам надо уж использовать await ReadToEndAsync()
https://stackoverflow.com/questions/15975499/task-run-freezing
Обсуждают сегодня