我正在尝试了解C#中的async
和await
,并且一直在阅读MSDN。我到达了this example,我已将其复制到控制台应用程序中,希望使用调试器来查看异步处理异步的方式。
使用信息in this answer,我调整了MS代码以在应用程序中运行它(可能错误地作为学习者)。我得到的错误信息就在这一行:
Task<string> theTask = DelayAsync();
CS0120非静态字段需要对象引用, 方法或属性'Program.DelayAsync()'
这是我做错了什么,还是MSDN代码中的错误?任何人都可以解释如何从控制台应用程序运行DoSomethingAsync()
方法,以便我可以在调试器中看到如何返回异常吗?
class Program
{
static void Main()
{
DoSomethingAsync().Wait();
}
static async Task DoSomethingAsync()
{
Task<string> theTask = DelayAsync();
try
{
string result = await theTask;
Debug.WriteLine("Result: " + result);
}
catch (Exception ex)
{
Debug.WriteLine("Exception Message: " + ex.Message);
}
Debug.WriteLine("Task IsCanceled: " + theTask.IsCanceled);
Debug.WriteLine("Task IsFaulted: " + theTask.IsFaulted);
if (theTask.Exception != null)
{
Debug.WriteLine("Task Exception Message: " + theTask.Exception.Message);
Debug.WriteLine("Task Inner Exception Message: " + theTask.Exception.InnerException.Message);
}
}
private async Task<string> DelayAsync()
{
await Task.Delay(100);
//throw new OperationCanceledException("canceled");
//throw new Exception("Something happened.");
return "Done";
}
}