C# 使用StorageFile的DeleteAsync函数删除本地文件夹中的文件

C# 使用StorageFile的DeleteAsync函数删除本地文件夹中的文件,c#,.net,windows-8,microsoft-metro,C#,.net,Windows 8,Microsoft Metro,我正在检查数据文件夹中的所有文件,没有一个文件被删除。我不确定,但我认为我做错了什么,但我不知道是什么: private async void pageRoot_Unloaded(object sender, RoutedEventArgs e) { IReadOnlyList<StorageFile> thefiles; var localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;

我正在检查数据文件夹中的所有文件,没有一个文件被删除。我不确定,但我认为我做错了什么,但我不知道是什么:

private async void pageRoot_Unloaded(object sender, RoutedEventArgs e)
{
    IReadOnlyList<StorageFile> thefiles;

    var localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
    thefiles = await localFolder.GetFilesAsync();

    for(int i = 1; i < thefiles.Count; i++)
    {
        await thefiles[i].DeleteAsync(StorageDeleteOption.Default);
    }
}
private async void pageRoot\u已卸载(对象发送方,RoutedEventArgs e)
{
i列出文件;
var localFolder=Windows.Storage.ApplicationData.Current.localFolder;
thefiles=await localFolder.getfileasync();
for(int i=1;i

我这样做对吗?你知道为什么这样不行吗?我没有收到任何编译时间或运行时错误。

如果在for look上设置断点并逐步完成单个任务。。看看等待是否真的在等待。同时放置try/catch,看看是否有异常被抛出。

您遇到了另一个问题,因为断点从未被命中,但我只想提及

您的第一个文件将永远不会被删除,因为您正在将i初始化为1。将其初始化为0

for(int i = 0; i < thefiles.Count; i++)
{
    await thefiles[i].DeleteAsync(StorageDeleteOption.Default);
}
for(int i=0;i
抱歉,伙计……只是出于热情,回答错了。无需担心@UthistranS。我也这么做过,哈哈。有时我会说“哦!我知道这件事!”然后我看到反对票,然后我会说“哦,这不一样…”:p没有例外被抛出,当我把断点放在那里时,它们永远不会被击中。我只是能够通过将代码放在OnNavigatedTo事件中来隔离用于删除所有文件的代码,并且成功了。但我不能在那里用。我需要将它放在卸载事件或挂起事件中,正如您在我的另一个问题中提到的,但代码在那里不起作用,断点在那里也不会被命中。为什么不使用task创建一个异步任务。运行,然后在该任务中删除文件。。然后可以从OnNavigatedTouseForEach而不是for调用它,这样可以避免愚蠢的错误,比如从错误的索引开始。仅供参考:在.NET中,您可以创建不从索引0开始的数组(默认值为0,但您可以创建从10或任何其他值开始的数组,互操作原因),对集合进行迭代的最安全方法是使用foreach。