无法通过APM扩展访问TAP中的非静态方法

时间:2013-07-04 15:40:18

标签: c# .net sockets asynchronous task-parallel-library

我是新手,我正在尝试为我的Socket对象为BeginConnect方法创建一个TAP-over-APM包装器

public static Task ConnectTaskAsync(this Socket socket, EndPoint endpoint)
{
    return TaskFactory.FromAsync(socket.BeginConnect, socket.EndConnect, endpoint, null);
}

但是,我在静态上下文中的FromAsync方法“无法访问非静态方法FromAsync”时收到错误。

我的代码应该如何?

2 个答案:

答案 0 :(得分:3)

由于错误试图告诉您,您需要一个TaskFactory的实例。

您可以使用默认的单例实例(Task.Factory),也可以使用其构造函数之一创建自己的实例。

答案 1 :(得分:-1)

您可以在static方法中调用none static方法,但不能在静态方法中调用非静态方法。

因此,要么将FromAsync更改为静态,要么创建它的实例。