Windows商店应用程序中的异步c#

时间:2013-12-31 16:14:13

标签: c# asynchronous store readline getfiles

你好这里有一些非常奇怪的事情,我有这些代码行在另一个测试解决方案中完美运行但是当我在我的主要解决方案中有它们时我有一个问题:

当我正常运行时,它没有做任何事情,当我在Debug中运行并一步一步地运行时。

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)
        {
        }

1 个答案:

答案 0 :(得分:1)

您可能没有看到结果,因为您没有等待InitializeContents完成。关注Task-based Asynchronous Pattern (TAP);我的博客上也有async intro您可能会觉得有帮助。

如果我的推测是正确的,那么您可以通过InitializeContents返回Task而不是void来修复代码(并将其重命名为遵循TAP命名约定:{{1 }}),并且调用代码InitializeContentsAsync是从await返回的Task