1
使用VB .Net異步套接字方法時,應如何定義回調函數?新AsyncCallback(AddressOf函數)和AddressOf函數之間的區別
Private Sub ServerRunTime(Optional ByRef ListeningAddress As String = "", Optional ByRef Port As Short = 31337)
Dim Listener As Socket = ConfigListener(ListeningAddress, Port)
Listener.Listen(32)
Listener.BeginAccept(New AsyncCallback(AddressOf OnAccept), Listener)
End Sub
Private Sub OnAccept(ByVal AcceptResult As IAsyncResult)
Dim Listener As Socket = CType(AcceptResult.AsyncState, Socket)
Dim aClientObj As New ClientObj
Dim ClientID As Integer = Clients.Count
aClientObj.ClientSok = Listener.EndAccept(AcceptResult)
aClientObj.ClientID = ClientID
Clients.Add(aClientObj)
Clients(ClientID).ClientSok.BeginReceive(Clients(ClientID).RecvBuffer, 0, Clients(ClientID).RecvBuffer.Length, SocketFlags.None, AddressOf OnReceive, ClientID)
Listener.BeginAccept(New AsyncCallback(AddressOf OnAccept), Listener)
End Sub
在上面的代碼示例我已經測試都
New AsyncCallback(AddressOf OnReceive)
AND
AddressOf OnReceive
兩者產生相同的結果。
那麼哪個是正確的? 是否有可能創建AsyncCallback對象作爲變量,以避免創建一個新的每個接收?