我有以下代码。用于调用wcf服务异步。我无法弄清楚处理程序的作用和args或使用它的原因(我如何使用它)。我知道该方法返回一个任务,我使用此任务等待它被调用的方法。任何帮助将不胜感激。
public Task<List<Student>> GetStudents()
{
var tcs = new TaskCompletionSource<List<Student>>();
EventHandler<GetStudentsCompletedEventArgs> handler = null;
handler = (sender, args) =>
{
if (args.UserState == tcs)
{
service.GetStudentsCompleted -= handler;
if (args.Error != null)
{
tcs.TrySetException(args.Error);
}
else if (args.Cancelled)
{
tcs.TrySetCanceled();
}
else
{
tcs.TrySetResult(args.Result);
}
}
};
service.GetStudentsCompleted += handler;
service.GetStudentsAsync(tcs);
return tcs.Task;
}