Windows 8 在意外时间调用了一个方法。(来自HRESULT:0x800000E的异常)异常由方法引发

Windows 8 在意外时间调用了一个方法。(来自HRESULT:0x800000E的异常)异常由方法引发,windows-8,Windows 8,我在Windows8应用程序的C#中创建了一个方法,从XML文件中读取数据并将其存储在对象中,然后将对象值绑定到UI元素中 我正在使用一些异步文件读取和写入方法,因为我在主页构造函数中调用此方法,所以我无法使用wait关键字,因此得到以下异常。“在意外时间调用了一个方法。(来自HRESULT的异常:0x800000E)” 当我在不调试的情况下运行应用程序,但通过单步执行代码(使用F11)进行调试时,我得到了所需的输出。如何在不进行调试的情况下获得所需的输出 我已经在下面粘贴了代码片段 publi

我在Windows8应用程序的C#中创建了一个方法,从XML文件中读取数据并将其存储在对象中,然后将对象值绑定到UI元素中

我正在使用一些异步文件读取和写入方法,因为我在主页构造函数中调用此方法,所以我无法使用wait关键字,因此得到以下异常。“在意外时间调用了一个方法。(来自HRESULT的异常:0x800000E)”

当我在不调试的情况下运行应用程序,但通过单步执行代码(使用F11)进行调试时,我得到了所需的输出。如何在不进行调试的情况下获得所需的输出

我已经在下面粘贴了代码片段

public object mymethod()
{
    var FileshareDetails = Windows.Data.Xml.Dom.XmlDocument.LoadFromFileAsync(file, localsettings);
    var QFileshare = FileshareDetails.GetResults();
    XmlNodeList nodeList = QFileshare.SelectNodes("/FileShareDetails/FileShare");

    foreach (IXmlNode node in nodeList)
    {
        QSFileShare FileShare = new QSFileShare();
        FileShare.FileShareName = node.Attributes[0].InnerText;
        ...
    }
}

您可以将代码放在onNavigatedTo事件中

您可以将代码放在onNavigatedTo事件中

GetResults
是非阻塞的,即它将尝试立即从异步执行的方法中获取结果,即使该方法尚未完成运行且尚未获取结果

您必须将
wait
关键字与以Async结尾的方法一起使用。这意味着您的方法
mymethod
必须符合异步模式。如果你正在编写Windows8应用程序,那么整个
async
的内容值得一读

异步是一种编译器技巧,它的设计目的是使它更容易,并使人们不阻塞UI线程,开发出响应更快的应用程序

或者,如果要阻止线程,可以使用
AsTask().Result
关闭
GetResults()
调用


除了单元测试或肮脏的研究/演示代码之外,没有很多好的理由来阻止。如果您必须阻塞,那么您可能在体系结构级别上做了一些错误。

GetResults
是非阻塞的,即它将尝试立即从异步执行的方法中获取结果,即使该方法尚未完成运行,并且还没有获得结果

您必须将
wait
关键字与以Async结尾的方法一起使用。这意味着您的方法
mymethod
必须符合异步模式。如果你正在编写Windows8应用程序,那么整个
async
的内容值得一读

异步是一种编译器技巧,它的设计目的是使它更容易,并使人们不阻塞UI线程,开发出响应更快的应用程序

或者,如果要阻止线程,可以使用
AsTask().Result
关闭
GetResults()
调用


除了单元测试或肮脏的研究/演示代码之外,没有很多好的理由来阻止。如果你不得不阻止,你可能在架构层面上做了错事。

尽管这个答案忽略了教你任何东西(没有分数),但考虑到你要做的事情的背景,这不是一个坏建议。尽管这个答案忽略了教你任何东西(没有分数),考虑到你要做的事情,这不是一个坏建议。