【发布时间】:2013-07-04 13:58:08
【问题描述】:
我刚刚安装了 Visual Studio 2012,所以我终于可以测试 C# 5.0 的功能了 像异步/等待。我正在做一些测试,我想到了一个疑问。 处理任务结果的最佳方式是什么。
鉴于以下片段:
Task<List<string>> tarea = GetStringListAsync();
tarea.ContinueWith((x) =>
{
if (x.Status == TaskStatus.RanToCompletion)
{
x.Result.ForEach((y) => Console.WriteLine(y));
}
else if (x.Status == TaskStatus.Faulted)
{
Console.WriteLine(x.Exception.InnerException.Message);
}
});
private static async Task<List<string>> GetStringListAsync()
{
return await Task.Run(() =>
{
return GetStringList();
});
}
private static List<string> GetStringList()
{
//I uncomment this to get forced exception
//throw new Exception("Error Occurred");
//Add some delay
System.Threading.Thread.Sleep(12000);
return new List<string>() { "String1", "String2", "String3" };
}
我正在处理ContinueWith 中的任务结果,但我想知道是否有更好的 方法。
【问题讨论】:
标签: c# .net asynchronous task