Exception 在意外时间调用了一个方法

Exception 在意外时间调用了一个方法,exception,windows-8,windows-runtime,local-storage,winrt-async,Exception,Windows 8,Windows Runtime,Local Storage,Winrt Async,我试图使用GetFileAsync迭代目录中的所有文件,但每次调用GetResults方法时,它都会抛出一个异常 System.InvalidOperationException:在意外情况下调用了方法 时间 代码很简单 var files = myStorageFolder.GetFilesAsync(); //runs fine var results = files.GetResults(); //throws the exception 我是新赢得8德夫,所以我可能错过了一些明显的东西

我试图使用GetFileAsync迭代目录中的所有文件,但每次调用GetResults方法时,它都会抛出一个异常

System.InvalidOperationException:在意外情况下调用了方法 时间

代码很简单

var files = myStorageFolder.GetFilesAsync(); //runs fine
var results = files.GetResults(); //throws the exception
我是新赢得8德夫,所以我可能错过了一些明显的东西

编辑(已解决) 我正在运行我的控制台应用程序,但是现在程序运行的是异步的,
files.GetResult()
方法不再存在

static void Main(string[] args)
{
   var files = GetFiles(myStorageFolder);
   var results = files.GetAwaiter().GetResults();//Need to add GetAwaiter()
}

static async Task GetFiles(StorageFolder sf)
{
   await sf.GetFilesAsync();
}

您需要等待异步方法完成。因此,您可以使用新的wait作为一个选项:

var files = await myStorageFolder.GetFilesAsync();

您可能需要查看有关处理异步方法的文档。

您应该等待
var files=myStorageFolder.getfileasync()因为在进入下一条指令时,操作可能仍在运行
var results=files.GetResults()//抛出异常


如果您不想使用
async
关键字(在我的例子中,代码在属性中,因此
async
不是选项),您可以使用
TaskAwaiter
,通过链接这两种方法:

var folder = Package.Current.InstalledLocation.GetFolderAsync("folderName").GetAwaiter().GetResult();

这不会抛出<代码>无效操作异常>代码>也不会造成死锁。

如果您使用的是Wistas.Fastual.IasycCurt之类的任务变量,代码可以是这样的:

var file = StorageFile.GetFileFromPathAsync(protocolArgs.Uri.LocalPath).AsTask().Result;

我需要任何
使用
语句来使用
GetAwaiter
方法吗?@user1我不记得了,这是两年前的事了。但是通过查看文档,这是您需要的扩展方法:。它是在
系统
名称空间中定义的,所以您可能已经在范围内了。我注意到
GetAwaiter()
正在执行
任务
,我试图在
iawaitable操作
上使用它,所以我不得不调用
AsTask
,然后
结果
,该死的
UWP
。谢谢你!这也解决了
if
语句中的问题。我刚运行应用程序时收到了错误,但如果我在
if
语句前面放置了一个断点并使用Step-Into来运行
if
语句,则不会收到错误
if(ApplicationData.Current.LocalFolder.TryGetItemAsync(“savedFavorites.xml”).GetAwaiter().GetResult()==null)
var file = StorageFile.GetFileFromPathAsync(protocolArgs.Uri.LocalPath).AsTask().Result;