C# 在静态方法中使用异步函数

C# 在静态方法中使用异步函数,c#,asynchronous,async-await,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

我有一个静态方法,在其中我调用
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(...)
} 
一切都好!!!我思考,没有
等待
关键字,C#不会等待过程完全完成


你对解决我的问题有什么建议吗?

方法是
静态的这一事实并不意味着它不能被标记为
异步的

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());
}
内部静态异步任务LoadTenWords(int-boxId)
{
XmlHelper XmlHelper=新的XmlHelper();
XDocument xDoc=wait xmlHelper.LoadDocument();
返回xDoc.Root.substands(“Word”).Select(element=>newWord());
}

使用
Result
会导致方法阻塞,直到任务完成。在你的环境中,这是一个问题;您不需要阻塞,而只需要
wait
任务(或者使用一个continuation来处理结果,但是
wait
更容易)。

哪里定义了XmlHelper?它不是System.Xml.Linq类,是吗?我自己创建的,它是为Windows应用商店appWell创建的,您上面发布的代码对我来说很好(结果应该在方法完成时阻止),所以您的XmlHelper类中可能有问题?您知道,我只是忘了提到我在property@sma没关系:
公共静态任务词{get{return LoadTenWords(0);}}
如果你有更复杂的事情,你需要提供更多的信息。如果有更多的事情,你可能想问另一个问题。是的,我应该问另一个问题
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());
}