Mah*_*hdi 5 c# asynchronous async-await
我有一个静态方法,在其中我调用async方法(xmlHelper.LoadDocument()).我在Setter部分的一个属性中调用此方法
internal static IEnumerable<Word> LoadTenWords(int boxId)
{
XmlHelper xmlHelper = new XmlHelper();
XDocument xDoc = xmlHelper.LoadDocument().Result;
return xDoc.Root.Descendants("Word").Single(...)
}
Run Code Online (Sandbox Code Playgroud)
如您所知,LoadTenWord是静态的,不能是异步方法,因此我使用Result属性调用LoadDocument.当我运行我的应用程序时,应用程序不起作用,但是当我调试它并且我在下面的行中等待
XDocument xDoc = xmlHelper.LoadDocument().Result;
Run Code Online (Sandbox Code Playgroud)
一切都好!!!我认为,没有await关键字,C#不会等待完全完成的过程.
你对解决我的问题有什么建议吗?
Ser*_*rvy 12
事实上,该方法static也并不意味着它不能被标记为async.
internal static async Task<IEnumerable<Word>> LoadTenWords(int boxId)
{
XmlHelper xmlHelper = new XmlHelper();
XDocument xDoc = await xmlHelper.LoadDocument();
return xDoc.Root.Descendants("Word").Select(element => new Word());
}
Run Code Online (Sandbox Code Playgroud)
使用Result方法阻塞结果直到任务完成.在您的环境中,这是一个问题; 你需要不阻止,但仅仅await任务(或使用延续到处理结果,但是await是多容易).
| 归档时间: |
|
| 查看次数: |
13312 次 |
| 最近记录: |