C# 如何使用“读取多个文件”;getfileasync";UWP中的方法

C# 如何使用“读取多个文件”;getfileasync";UWP中的方法,c#,asynchronous,file-io,uwp,C#,Asynchronous,File Io,Uwp,我正在开发一个UWP应用程序,我需要读入一些Json文件,以便在Assets文件夹中使用数据 然后我创造了这个方法 public async Task<StorageFile> access(string filename) { var storageFile = await Package.Current.InstalledLocation.GetFileAsync(@"Assets\data\" + filename); return st

我正在开发一个UWP应用程序,我需要读入一些Json文件,以便在Assets文件夹中使用数据

然后我创造了这个方法

public async Task<StorageFile> access(string filename)
    {
        var storageFile = await Package.Current.InstalledLocation.GetFileAsync(@"Assets\data\" + filename);
        return storageFile;
    }

public async Task<string> read(StorageFile storagefile)
    {
        string content = await FileIO.ReadTextAsync(storagefile);
        return content;
    }
当我尝试在文本块中显示它时,结果是成功的

mytextblock.text = mycourseinfo;
然后我添加了另一个来读取第二个文件

Task<StorageFile> stream2_1 = access("class_info.json");
Task<string> stream2_2 = read(stream2_1.Result);
string allclassinfo = stream2_2.Result;
Task stream2_1=access(“class_info.json”);
任务流2_2=读取(流2_1.结果);
字符串allclassinfo=stream2\u 2.Result;
然后问题出现了,应用程序也不会显示任何错误消息,我想这是一个解除锁定…

我试着单独阅读第二个文件,结果又成功了!
那么我怎样才能解决这个问题呢!!我需要读三个文件

您只需要在方法后面添加wait,因为它们将返回任务。当我在后面添加wait时,它将完成该行的执行,并且只有在完成该行之后才会移动到下一个代码行,因为您没有使用wait,所以会创建死锁。使用以下代码读取每个文件

StorageFile stream1_1 = await access("mycourse.json");
string stream1_2 = read(stream1_1);
string mycourseinfo = stream1_2;
还请注意,使用wait时,返回类型不应为Task

为了避免使构造函数异步,必须使用加载的事件

因此,在页面的构造函数中添加以下加载事件,如下所示:

Loaded += async (s, e) =>
{
    //do any awaited stuff here
};

谢谢你的回答!在我添加了
wait
之后,ide要求我将主方法改为
async
。然而,我在加载页面时实现了这个方法,因此它位于
公共主页
,然后我面临将主页方法转换为异步的问题……你不需要主构造函数是asyc,正如你所说的,你可以将它放在加载的事件中,并使加载的事件asyc@Zizheng
Loaded += async (s, e) =>
{
    //do any awaited stuff here
};