Übergeben Sie ein Argument an die AsyncCallback-Funktion?

8

Ich lerne Socket-Programmierung und ich habe folgende Funktion:

%Vor%

und so wird der Callback gesetzt:

%Vor%

Das Problem ist, dass ich ein anderes Argument an OnDataReceived Callback-Funktion übergeben muss, wie kann ich das tun? Ich versuche, einen einfachen TCP-Server zu erstellen, und ich muss verfolgen, von welchem ​​Client die Daten stammen. Irgendwelche Tipps? Danke!

    
user1192403 08.02.2012, 11:38
quelle

3 Antworten

7

Ich gehe davon aus, dass Sie System.Net.Sockets.Socket hier verwenden. Wenn Sie sich die Überladungen von BeginReceive ansehen, werden Sie sehen der Parameter object (benannter Zustand). Sie können einen willkürlichen Wert als diesen Parameter übergeben und er wird zu Ihrem AsyncCallback -Aufruf zurückfließen. Sie können dann auf sie zugreifen, indem Sie die AsyncState -Eigenschaft des IAsyncResult -Objekts verwenden, das an Ihren Callback übergeben wurde. ZB;

%Vor%     
MrMDavidson 08.02.2012, 11:46
quelle
3

Dies ist ein Problem, das ich lieber mit anonymen Delegierten lösen möchte:

%Vor%

Es erspart es, ein Zustandsobjekt in die Empfangsfunktion zu werfen.

    
spender 08.02.2012 11:52
quelle
2

Wenn Sie BeginReceive aufrufen, können Sie object als letzten Parameter übergeben. Das gleiche Objekt wird Ihrem Callback über die IAsyncResult -Eigenschaft von AsyncState zur Verfügung gestellt.

    
dasblinkenlight 08.02.2012 11:48
quelle