[C#] Handle kan niet synchroon lezen?

Pagina: 1
Acties:

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 23-12-2025

_Thanatos_

Ja, en kaal

Topicstarter
Ik moet een bestand inlezen via een FileStream, maar om de een of andere reden stuit ik nu op een bestand dat zich niet synchroon wil laten uitlezen met mijn code. Waarom dat zo is, begrijp ik sowieso niet, want de vorige versie van mijn tool doet het prima en daarin is het lezen van het bestand niet veranderd.

Goed, ik probeer dus dit:
C#:
1
2
FileStream stream = new FileStream(file.Filename, FileMode.Open, FileAccess.Read, FileShare.Read, 8, FileOptions.SequentialScan);
bytesRead = stream.Read(buffer, 0, bufferSize);

Pretty straightforward, huh? Maar dan klapt ie er dus uit:
code:
1
Handle does not support synchronous operations. The parameters to the FileStream constructor may need to be changed to indicate that the handle was opened asynchronously (that is, it was opened explicitly for overlapped I/O).
Het bestand is afkomst van een Daemon Tools drive waarin een .img file gemount is. Maar dat maakt eigenlijk helemaal niet uit, want nogmaals: het heeft gewerkt met dezelfde code...

Ik zie 2 dingen die ik kan doen: uitzoeken (antwoord krijgen op ;)) waarom de handle opeens niet meer synchroon gelezen kan worden of de handle asynchroon lezen. Maar voor de 2e "oplossing" wil ik wel dan kunnen uitvragen of dat nodig is, of de file dus synchrone reads ondersteunt...

日本!🎌


  • whoami
  • Registratie: December 2000
  • Laatst online: 07:13
Ik moet zeggen dat ik niet bekend ben met de constructor die je gebruikt; heb je al eens een andere constructor gebruikt ?

Waarom gebruik je trouwens geen StreamReader om van die FileStream te lezen ?
code:
1
2
FileStream stream = ...
StreamReader reader = new StreamReader (stream);

[ Voor 29% gewijzigd door whoami op 23-04-2006 09:16 ]

https://fgheysels.github.io/


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 23-12-2025

_Thanatos_

Ja, en kaal

Topicstarter
StreamReader gebruikt intern ook gewoon stream.Read(...)
En die constructor, die heeft gewoon zoveel parameters omdat ik er zeker van wil zijn dat de file geopend wordt op de manier waarop ik dat wil.

日本!🎌


  • Zr40
  • Registratie: Juli 2000
  • Niet online

Zr40

Moderator General Chat

heeft native IPv6

Juist omdat het gewerkt heeft met dezelfde code, maakt het verschil uit als je een bestand gebruikt op een fysieke CD-ROM? Of op je harde schijf?