(C#)成功执行FileIO.ReadTextAsync后运行命令

时间:2014-05-21 02:55:55

标签: c# asynchronous file-io windows-store-apps

我正在通过文件读取操作设置RichEditBox的内容,如下所示:

Editor.Document.SetText(Windows.UI.Text.TextSetOptions.None, await FileIO.ReadTextAsync(file));

但是我想在异步读取操作完成时再运行一些命令。通过documentation,可以通过.done()命令在WinJS中实现类似的功能。但我正在使用C#和XAML,所以我需要找到另一种方式。

我的猜测是,这可以使用AsyncStatus完成。

我已经尝试设置以下代码,但我不知道是什么替换??????用:

AsyncStatus status = ??????;
if (status == AsyncStatus.Completed)
{
    // Do something.
}
else
{
    // An error occurred.
}

有什么方法可以让它发挥作用吗?还有另一种(更好的?)方法吗?

2 个答案:

答案 0 :(得分:1)

我不熟悉Windows应用商店应用,所以也许我错过了一些内容,但由于您正在等待FileIO.ReadTextAsync来电,因此您的方法会阻止,直到SetText来电完成,所以你之后可以简单地编写其他命令的代码:

Editor.Document.SetText(Windows.UI.Text.TextSetOptions.None, await FileIO.ReadTextAsync(file));
// Do other stuff - ReadTextAsync will have finished by now.

答案 1 :(得分:0)

@Mark是正确的,该方法将在启动ReadTextAsync方法后立即返回,一旦完成,如果没有错误,SetText调用将继续。否则将抛出异常。如果您需要记录错误等,可以捕获它。

public async void SetText(string file)
{
    try
    {           
        var text = await FileIO.ReadTextAsync(file);

        //ReadTextAsync succeeded, set text 
        Editor.Document.SetText(Windows.UI.Text.TextSetOptions.None, text);
    }
    catch (Exception ex)
    {
        // error do something
        throw;
    }
}