2016-11-17 3 views
0

Je suis en train d'ajouter un « délai d'attente » pour la méthode ReadAsync d'un NetworkStream.NetworkStream ReadAsync annulation

Je veux annuler la ReadAsync après un certain temps.

Par exemple:

ctsTimeout.CancelAfter(10); 

int bytesRead = await nsStream.ReadAsync(newArr, 0, newArr.Length, ctsTimeout.Token); 

Mais la méthode attend toujours une réponse du serveur.

Est-il possible d'annuler cette méthode dans son état de lecture?

Répondre

1

NetworkStream (ou Stream par héritage) ne supporte pas vraiment l'annulation. La méthode ReadAsync accepte un jeton d'annulation, bien sûr; mais cela vous permet simplement de savoir si une annulation a été demandée avant la fin de la lecture. Le ReadAsync enveloppements vraiment juste BeginRead et EndRead --which offrent aucun moyen d'annuler l'opération de lecture.

Pour annuler vraiment une lecture que vous devez disposer ou Close l'objet NetworkStream.