Stream.Write na mono

0

Witam, mam aplikacji w wf, która wysyła mi dokumenty na serwer:

kręcę sobie taką pętle: (pseudokod)

while ((b = in.Read(, , )) > 0) //odczyt pliku z dysku
{
    out.Write(, , b); //zapis do Stream (połączenie przez neta)
}

i o ile na windowsie to dobrze działa, dobrze pokazuje prędkość, progress wysyłania (zapis do strumienia z prędkością łącza) to pod mono przekręci tą pętle z prędkością odczytywania pliku z dysku (przez co pokazuje że już wysłano, a na prawdę nie wysłano) a później wisi na pobieraniu odpowiedzi z serwera a tak naprawdę wtedy jeszcze wysyła.. Miał ktoś taki problem? Jak zrobić, żeby pod mono dobrze działało?

0

A czasem write nie wskazuje ile bajtów zapisał ?
Jeżeli tak to w out.Write(, , b); zakładasz, że zawsze całość się wyśle, a to chyba nie jest poprawne podejście, zweryfikuj ilości odczytanych i zapisanych bajtów.

0

Poza tym polecałbym użyć: https://msdn.microsoft.com/pl-pl/library/dd783870%28v=vs.110%29.aspx
Nie wiem czy jest w mono, ale w ten sposób łatwo skopiujesz dane z 1 stream-a do drugiego.

Przepraszam, nie zwróciłem uwagi, że masz tam pasek postępu, w tej sytuacji nic to nie da.

0

mam zrobione sprawdzanie, tylko mono przekręca tą pętle z prędkością odczytu z dysku, tak jak bym kopiował plik na dysk lokalny

0

Spróbuj na szybko jeszcze out.Flush() i zobacz co będzie.

0

ale to i tak bym musiał na końcu a wtedy nie będzie postępu, bo przeleci tą pętle jak teraz. Coś z mono nie tak.

0

Zrób flush po każdym write i zobacz czy coś to zmienia.

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