我正在编写一个简单的地铁应用程序。但是,访问文件时 API 会阻塞。通过阻塞,我的意思是程序永远等待。创建/打开文件或文件夹最多需要几秒钟。在这种情况下,它需要永远。
当我运行程序时,它永远不会从 OnTest 中返回。是不是你得到的。我了解 .Wait 将等待文件和文件夹的创建完成。也许这不是很好的设计。然而,这不是重点。
我的问题是:
- 您是否得到相同的行为(永远阻止程序)
- 这是应该发生的事情还是 WinRT 中的错误?(我正在使用消费者预览版)
- 如果这是预期的行为,为什么它需要永远?
这是 XAML 代码:
<Button Click="OnTest">Test</Button>
这是 C# 代码:
private async void OnTest(object sender, RoutedEventArgs e)
{
var t = new Cache("test1");
t = new Cache("test2");
t = new Cache("test3");
}
class Cache
{
public Cache(string name)
{
TestRetrieve(name).Wait();
}
public static async Task TestRetrieve(string name)
{
StorageFolder rootFolder = ApplicationData.Current.LocalFolder;
var _folder = await rootFolder.CreateFolderAsync(name, CreationCollisionOption.OpenIfExists);
var file = await _folder.CreateFileAsync("test.xml", CreationCollisionOption.OpenIfExists);
}
}
它在第二次调用 new Cache("test2"); 时阻塞。