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

本文关键字:TAP 静态方法 访问 扩展 APM | 更新日期: 2023-09-27 18:21:07

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

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

但是,我在静态上下文中的FromAsync方法"无法访问非静态方法FromAsync"上遇到错误。

我的代码应该是什么样子?

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

正如错误试图告诉您的那样,您需要一个TaskFactory的实例。

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

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

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