XSL*_*XSL 23 exception local-storage windows-8 windows-runtime winrt-async
我正在尝试使用GetFilesAsync迭代目录中的所有文件,但每次调用GetResults方法时,它都会抛出一个异常
System.InvalidOperationException:在意外时间调用了一个方法
代码很简单
var files = myStorageFolder.GetFilesAsync(); //runs fine
var results = files.GetResults(); //throws the exception
Run Code Online (Sandbox Code Playgroud)
我是Win 8 dev的新手,所以我可能会遗漏一些明显的东西.
编辑(已解决)
我正在运行我的控制台应用程序,但现在该程序运行异步,该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();
}
Run Code Online (Sandbox Code Playgroud)
dca*_*tro 38
如果你不想使用async关键字(在我的情况下,代码在属性中,所以async不是一个选项),你可以使用一个TaskAwaiter代替,通过链接这两个方法:
var folder = Package.Current.InstalledLocation.GetFolderAsync("folderName").GetAwaiter().GetResult();
Run Code Online (Sandbox Code Playgroud)
这InvalidOperationException不会引起僵局,也不会造成僵局.
小智 13
您需要等待异步方法完成.所以你可以使用new await作为一个选项:
var files = await myStorageFolder.GetFilesAsync();
Run Code Online (Sandbox Code Playgroud)
您可能需要在此处查看有关处理异步方法的文档.
| 归档时间: |
|
| 查看次数: |
17530 次 |
| 最近记录: |