Was passiert, wenn StreamReader entsorgt wird, während BeginRead aktiviert ist?C#

Ein Treffpunkt für C#-Programmierer
Guest
 Was passiert, wenn StreamReader entsorgt wird, während BeginRead aktiviert ist?

Post by Guest »

Ich habe noch keinen Code und untersuche die Architektur.
Stellen Sie sich vor, ich öffne den Stream zum Lesen und aktiviere das asynchrone BeginRead (es wird erwartet, dass der Stream „angehängt“ wird). " im Laufe der Zeit). Dann passiert irgendwann etwas und ich muss den Stream schließen und den anderen öffnen. Es scheint, dass das boolesche Argument für Dispose hier von Bedeutung ist, aber was passiert, wenn ich versuche, einen Stream zu entsorgen, der sich derzeit in seinem Rückruf befindet, in dem auf den Stream zugegriffen wird? Natürlich ist diese Frage nur wichtig, wenn sich der Rückruf in einem anderen Thread befindet (wobei ich mir nicht sicher bin, aber keine andere Möglichkeit sehe, wie Rückrufe hätten organisiert werden können).
Update: Danke Panagiotis für den Kommentar. Lassen Sie mich das klarstellen.
Ich erstelle mehrere Reader und muss mich damit befassen, dass die Streams gleichzeitig Updates für sie erhalten und an eine API weiterleiten.
Hierfür Ich öffne Reader und „aktiviere“ BeginRead mit einem Rückruf, der dann aufgerufen wird, wenn einige Daten im Stream erscheinen. Dieser Rückruf führt EndRead aus und aktiviert dann BeginRead erneut, um weitere Daten abzurufen.
Aber die Hauptschleife überwacht bestimmte Bedingungen und entscheidet möglicherweise, dass dieser Stream nicht benötigt wird mehr und muss es stornieren. Sie sagten, die Lösung könnte das „Stornierungstoken“ sein, und ich habe ein Problem damit. Ich verstehe nicht, worum es geht und wie man sie richtig verwendet. Die Beschreibung sagt es für sich: Ich mache etwas mit diesem Token, um dem Leser das Abbrechen zu signalisieren, und dieser Signalisierungsvorgang sollte nach Abschluss der Aktivitätsbereinigung zurückkehren?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post