2013-07-04 45 views
0

我是新來的這一點,我想爲我的Socket對象不能在TAP訪問非靜態方法在APM擴展

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

創建一個TAP-過APM包裝的BeginConnect方法。然而,我在FromAsync方法「無法訪問靜態上下文中的非靜態方法FromAsync」時出錯。

我的代碼應該如何?

+0

FromAsync需要是靜態的。 – Zaki

+0

@Sam:這是一種BCL方法。 – SLaks

+0

@SLaks看到我的答案低於創建它的一個實例 – Zaki

回答

3

由於錯誤試圖告訴你,你需要一個TaskFactory的實例。

您可以使用默認的單例實例(Task.Factory),或者您可以使用其構造函數之一創建自己的實例。

-1

您可以在none static方法中調用static方法,但不能在靜態方法內調用非靜態方法。

因此,將FromAsync更改爲靜態或創建它的一個實例。

+0

你不能改變一個BCL方法。並說你不能從靜態方法調用非靜態方法是非常具有誤導性的。 – svick

+0

@svick如果您正確閱讀我還說過「創建它的一個實例」 – Zaki

相關問題