我刚刚安装了 Visual Studio 2012,所以我终于可以测试 C# 5.0 的功能,例如 async/await。我正在做一些测试,我想到了一个疑问。处理任务结果的最佳方法是什么。
鉴于以下片段:
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" };
}
我正在处理 Result in 任务ContinueWith
,但我想知道是否有更好的方法。