Wysyłanie pliku przez HTTP

0

Witam
Na początek sam kod:

io = GetRequestStream(); //HttpRequest - stream do zapisu
using (Stream in = x) //otwieram plik
{
    while ((bytes = in.Read(data, 0, buffer)) > 0)
        io.Write(data, 0, bytes);
}
Console.WriteLine("WTF");

Mam prosty program do wysyłania pliku na serwer przez żądania HTTP. Co sekundę obliczam prędkość jeszcze, ale..- czemu ta pętla przekręca się natychmiast i przechodzi to WTF, jeśli w managerze zadań dalej pokazuje, że wysyła z moją prędkością łącza? Pętla powinna się skończyć jak zapisze plik, tak mi się wydaje. Dlatego dostaję magiczną prędkość wysyłania i postęp 100% po sekundzie pomimo że tak naprawdę w tle dalej wysyła tak jak trzeba..

Dodam, że program czeka dopiero jak dam GetResponse na HttpWebRequest (wtedy wysyła plik, ale mój postęp ma już 100% przez przekręcenie pętli)</del>

0

Może zamiast samemu obliczać użycie prędkości skorzystać z gotowca w postaci PerformanceCounter?
http://stackoverflow.com/a/8666726

0

Zrobiłem sobie kod wysyłania pliku przez TcpClient i jest to samo.. Odczytuje kawałek pliku, zapisuje to strumienia.. zapisuje w chwile, ale w managerze urządzeń widzę, że wysyła dalej pomimo że mi już przeszło za tą pętle. Ustawiłem NoDelay na false/true, AllowWriteStreamBuffering na false, ale bez różnicy. Co ciekawe to działało, a nagle przestało, chociaż nie zmieniałem w tym kodzie nic..

//Dobra, to przez Antywirusa..

user image

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