UWP C#TryGetItemAsync-调用第三次挂起

UWP C#TryGetItemAsync-调用第三次挂起,c#,file,uwp,async-await,C#,File,Uwp,Async Await,我在开发UWP应用程序和使用await/async方面是个新手。我尝试从UWP应用程序的本地文件夹获取文件,但该应用程序挂起。该文件存在于驱动器上 我写了一些测试方法来尝试识别问题,但我不明白为什么它不起作用。两次运行正常,第三次始终挂起 有人知道我在做什么吗 代码: public void Test() { for (var i = 0; i < 10; i++) { KLogger.Log.Debug("");

我在开发UWP应用程序和使用await/async方面是个新手。我尝试从UWP应用程序的本地文件夹获取文件,但该应用程序挂起。该文件存在于驱动器上

我写了一些测试方法来尝试识别问题,但我不明白为什么它不起作用。两次运行正常,第三次始终挂起

有人知道我在做什么吗

代码:

    public void Test()
    {
        for (var i = 0; i < 10; i++)
        {
            KLogger.Log.Debug("");
            KLogger.Log.Debug("### Started : " + i);

            // create new or returns existent file
            var task = TestGetNewFile("test.txt");
            //task.ConfigureAwait(false);
            task.Wait();
            var res = task.Result;

            task.Dispose();

            KLogger.Log.Debug("### Done : " + i);
        }
    }

    public async Task<IStorageFile> TestGetNewFile(string fileName)
    {
        var storageFolder = ApplicationData.Current.LocalFolder;

        KLogger.Log.Debug("Creation started.");

        var fileItem = await storageFolder.TryGetItemAsync(fileName);

        KLogger.Log.Debug("Creation finished.");

        return null;
    }
2018-08-12 00:41:07.282 +02:00 [DBG] 
2018-08-12 00:41:07.282 +02:00 [DBG] ### Started : 0
2018-08-12 00:41:07.284 +02:00 [DBG] Creation started.
2018-08-12 00:41:07.289 +02:00 [DBG] Creation finished.
2018-08-12 00:41:07.289 +02:00 [DBG] ### Done : 0
2018-08-12 00:41:07.289 +02:00 [DBG] 
2018-08-12 00:41:07.289 +02:00 [DBG] ### Started : 1
2018-08-12 00:41:07.289 +02:00 [DBG] Creation started.
2018-08-12 00:41:07.300 +02:00 [DBG] Creation finished.
2018-08-12 00:41:07.300 +02:00 [DBG] ### Done : 1
2018-08-12 00:41:07.300 +02:00 [DBG] 
2018-08-12 00:41:07.300 +02:00 [DBG] ### Started : 2
2018-08-12 00:41:07.300 +02:00 [DBG] Creation started.
-- nothing more in log file --

如果您这样调用它,则可以一直使用
async wait

private async void MainPage_Loaded(object sender, RoutedEventArgs e)
{
    for (int i = 0; i < 10; i++)
    {
        var item = await TestGetNewFile("test.txt"); 
    }
}

async Task<IStorageItem> TestGetNewFile(string fileName)
{
     return await ApplicationData.Current.LocalFolder.TryGetItemAsync(fileName);         
}
private async void MainPage\u已加载(对象发送方,RoutedEventArgs e)
{
对于(int i=0;i<10;i++)
{
var item=wait TestGetNewFile(“test.txt”);
}
}
异步任务TestGetNewFile(字符串文件名)
{
返回await ApplicationData.Current.LocalFolder.TryGetItemAsync(文件名);
}

您可能会发现这个答案很有用。

您的代码无法编译。任务类中没有Dispose方法//程序集位置:C:\Users\user\.nuget\packages\microsoft.netcore.universalwindowsplatform\6.1.5\ref\uap10.0.15138\System.Runtime.dll-任务具有Dispose方法。但您可以删除Dispose调用。这只是一次测试。如果没有dispose,问题是相同的。UWP应用程序适用于目标平台Windows 10,版本1803(10.0;构建17134)分钟。版本Windows 10 Fall Creators更新(10.0;构建16xxx)如果您是从UI线程调用此代码,那么令人惊讶的是它在前两次工作,这是一种已知的死锁模式。试着像这样调用您的方法:
var task=task.Run(()=>TestGetNewFile(“test.txt”)