2016-11-17 5 views
0

Ich versuche, ein „Timeout“ für die ReadAsync Methode von einem NetworkStream hinzuzufügen.Network ReadAsync Stornierung

Ich mag die ReadAsync nach einer bestimmten Zeit beenden.

Zum Beispiel:

ctsTimeout.CancelAfter(10); 

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

Aber die Methode ist immer noch auf eine Antwort vom Server wartet.

Ist es möglich, dieses Verfahren in seinem Lesezustand zu beenden?

Antwort

1

NetworkStream (oder Stream durch Vererbung) nicht wirklich Löschung unterstützen. Die ReadAsync Methode akzeptiert eine Storno Token, sicher; Aber das erlaubt Ihnen wirklich nur zu wissen, ob eine Stornierung angefordert wurde, bevor der Lesevorgang abgeschlossen wurde. Die ReadAsync wirklich nur hüllt BeginRead und EndRead --which keine Möglichkeit bieten den Lesevorgang abzubrechen.

Um einen Lesevorgang wirklich abzubrechen, müssen Sie das Objekt CloseNetworkStream entsorgen.