问候!由于缺乏知识,我目前陷入困境。我有以下内容:
public void ClientEndConnect(IAsyncResult iar)
{
try
{
CommSocket = (Socket)iar.AsyncState;
CommSocket.EndConnect(iar);
OnNetworkEvents eventArgs = new OnNetworkEvents(true, "Connected: " + CommSocket.RemoteEndPoint.ToString(), string.Empty);
OnUpdateNetworkStatusMessage(this, eventArgs);
}
catch (ArgumentNullException e)
{
OnNetworkEvents eventArgs = new OnNetworkEvents(false, "Network Unavailable", e.Message);
OnUpdateNetworkStatusMessage(this, eventArgs);
}
}
这个编译很好但是因为这是一个回调所以它应该是:(静态)
public static void ClientEndConnect(IAsyncResult iar)
{
try
{
CommSocket = (Socket)iar.AsyncState;
CommSocket.EndConnect(iar);
OnNetworkEvents eventArgs = new OnNetworkEvents(true, "Connected: " + CommSocket.RemoteEndPoint.ToString(), string.Empty);
OnUpdateNetworkStatusMessage(this, eventArgs);
}
catch (ArgumentNullException e)
{
OnNetworkEvents eventArgs = new OnNetworkEvents(false, "Network Unavailable", e.Message);
OnUpdateNetworkStatusMessage(this, eventArgs);
}
)
但是当我这样做时,我得到了一堆错误,如:
错误1非静态字段,方法或属性'NietzscheBattleships.NetworkHelper.CommSocket'
需要对象引用 由于我缺乏对C#的了解,我无法理解这些错误。请帮我理解。我正在阅读什么是静态的,但你的评论也有助于消除我的困惑。
答案 0 :(得分:3)
答案 1 :(得分:2)
您在回调中引用'this',这仅对实例成员有效。
你有什么理由认为你的回调必须是静态的吗?
答案 2 :(得分:0)
CommSocket
也必须是静态的。