这段代码意味着什么?`它用于wcf服务调用

时间:2015-01-19 12:11:34

标签: c# wcf

我有以下代码。用于调用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;
    }

1 个答案:

答案 0 :(得分:0)

代码从事件异步模式(EAP)(由WCF客户端公开)转换为任务(TAP)。