0

您好,这里发生了一些非常奇怪的事情,我让这些代码行在另一个测试解决方案中完美运行,但是当我将它们放在我的主要解决方案中时,我遇到了问题:

当我正常运行它时,它什么也不做,当我在调试中运行并一步一步地运行时,它就可以工作了。

private async void InitializeContents()
    {
        var path = @"Assets\Data\";
        var folder = Windows.ApplicationModel.Package.Current.InstalledLocation;
        try
        {
            var file = await folder.GetFileAsync(path + "test.txt");
            var lines = await FileIO.ReadLinesAsync(file);
            var pref = "";
            foreach (string line in lines)
            {                                       
                if (line.ElementAt(0).Equals('-'))
                {
                    switch (line.ElementAt(1))
                    {
                        case 'c': { pref = @"City\";break; }
                        case 'v': { pref = @"Village\"; break; }
                    }
                    continue;
                }
                file = await folder.GetFileAsync(path + pref + line);
                var sub_lines = await FileIO.ReadLinesAsync(file);
            }

        }
        catch (FileNotFoundException)
        {
        }
4

1 回答 1

1

您可能看不到结果,因为您没有等待InitializeContents完成。遵循基于任务的异步模式(TAP);我的博客上也有一个async介绍,您可能会觉得有帮助。

如果我的推测是正确的,那么您可以通过InitializeContentsreturnTask而不是来修复代码void(并将其重命名以遵循 TAP 命名约定:)InitializeContentsAsync,并使用从.awaitTaskInitializeContentsAsync

于 2013-12-31T16:40:40.153 回答