[C#] Dysk sieciowy, przesyłanie pliku i postęp tego przesyłania

0

Witam.

Mam zmapowany dysk sieciowy pod system. Chciałbym wysłać plik, ale w taki sposób, abym widział ile faktycznie danego pliku się wysłało.

Aktualne rozwiązanie, które osiadam mimo, że korzysta z bufora nie działa. Wygląda to tak jakby zawartość pliku leciała do jakiegoś wewnętrznego bufora systemowego i dopiero po zamknięciu Stream'a, do którego piszę, zawartość pliku była dopiero faktycznie wysyłana na zmapowany dysk.

Czy da się coś z tym zrobić tak aby na bieżąco sprawdzać ile pliku zostało przesłane?

Z góry dziękuję za odpowiedzi.
Pozdrawiam.

0

musisz pisać po kawałku i po każdym zapisanym buforze wyświetlać ile udało ci się bajtów wysłać
zdaje się, że wielkość bufora w strumieniu jest defaultowo ustawiona na 4KB, więc jeśli piszesz mniejszymi kawałkami, dlatego tego nie widzisz, ustaw sobie inny rozmiar bufora w strumieniu (robi się to w konstruktorze, albo przez właściwość, nie pamiętam), ale uważam ze 4KB to i dość mało, więc raczej poszedłbym nawet w zwiększenie bufora, zależy jak duże i jak dużo plików bedziesz zapisywał, zbyt dużo operacji IO spowolni cały proces

jeśli to ci nie pomogło to pokaż swój kod

0

Tak właśnie robię. Korzystam z BinaryReader'a odczytując do bufora właśnie po 4096 bajtów i BinaryWriter'a, którym zapisuję tyle bajtów ile udało mi się wcześniej wczytać, wszystko w pętli, aż do momentu "przejścia" całego pliku.

Cała pętla przebiega szybko (dla pliku 2 MB), ale w tym czasie żadne dane nie lecą do zmapowanego dysku sieciowego. Dopiero w momencie zamknięcia strumienia BinaryWritera zawartość leci na dysk - dodam, że nie leci kawałek bufora tylko cały plik.

1 użytkowników online, w tym zalogowanych: 0, gości: 1