Stworzyłem wirtualny dysk w C# przy użyciu biblioteki Dokan (.NET) i działa całkiem dobrze.Czy firma Dokan/Dokan.NET (nie) obsługuje synchroniczne operacje we/wy?
Jednak, gdy próbuję odczytać plik z napędu w innej aplikacji, otrzymuję wyjątek za każdym razem, gdy używam operacji synchronicznie odczytujących, takich jak System.IO.File.ReadAllText(...)
.
Tekst wyjątku: "Uchwyt nie obsługuje operacji synchronicznych. Parametry konstruktora FileStream mogą wymagać zmiany, aby wskazać, że uchwyt został otwarty asynchronicznie".
Więc jeśli interpretuję to poprawnie, NET najwyraźniej próbuje odczytać całą zawartość pliku w jednej operacji synchronicznej, ale Dokan nie pozwala na to.
Ale kiedy używam metody takiej jak ReadAllText
, nie mam żadnej kontroli nad sposobem konstruowania FileStream
(czy nie jest to, że cały punkt tej metody, po wszystkim, po prostu pobiera zawartość pliku bez konieczności przeszkadzania ze strumieniami i czytnikami oraz buforami i czym?).
Czy mogę uzyskać, aby Dokan w jakiś sposób obsługiwał synchroniczny dostęp I/O do swoich plików? Czy muszę w jakiś sposób żyć z tym, że synchroniczne operacje nie są możliwe na plikach hostowanych przez Dokan (i mam nadzieję, że od nich nie zależy żadna aplikacja, która mogłaby kiedykolwiek pracować na moim wirtualnym dysku)?
Czy udało Ci się rozwiązać ten problem. Jestem nowy w Dokan. Najnowszy to obecnie 0.6 – Bamboo