Voici mon code:obtenir le résultat async de la méthode de rappel de TCPClient.BeginConnect
TcpClient _tcpClient = new TcpClient(AddressFamily.InterNetwork);
public void BeginConnect(string address, ushort port, OnConnectCallback cb) {
IAsyncResult ar = _tcpClient.BeginConnect(address, port, ConnectCallback, cb);
}
private void ConnectCallback(IAsyncResult ar) {
//The ar is acturally an instance of MultipleAddressConnectAsyncResult
//it contains the execution result I want.
//However, MultipleAddressConnectAsyncResult class is not public.
_tcpClient.EndConnect(ar);
}
Comme vous le savez, IAsyncResult a quelques méthode utile. Je ne peux pas obtenir les détails du résultat de l'exécution. Lorsque je débogue ce code, je trouve ce que je veux comme suit: Comment puis-je accéder aux membres non-publics?
Merci, mais cela ne fonctionne pas. J'ai une 'Une exception non gérée de type' System.NullReferenceException 's'est produite dans ...' exception. Et je ne peux pas trouver MultipleAddressConnectAsyncResult n'importe où. – guogangj
c'est parce que c'est une classe privée dans l'espace de noms System.Nets de .NET. Nous pouvons donc obtenir le type à l'exécution. J'ai modifié la réponse. s'il vous plaît laissez-moi savoir si cela fonctionne. –
D'accord, ça fonctionne. – guogangj