我正在通过文件读取操作设置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.
}
有什么方法可以让它发挥作用吗?还有另一种(更好的?)方法吗?
答案 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;
}
}