Michał Klimczak

Michał Klimczak mBank SA,
specjalista

Temat: Progressbar + wysylanie via bt

Witam,

Mam maly problem z progressbarem i obsluga BT (via InTheHand) w aplikacji pod WM. Chcialbym pokazac postep przesylanego pliku.

Ten kod nie chce zatrybic jesli chodzi o progressbar. Za wskazowki i sugestie dziekuje pieknie z gory:


Uri url = new Uri("obex://" + target + "/" + listBox2.SelectedItem.ToString());

try
{
Cursor.Current = Cursors.WaitCursor;

ObexWebRequest req = new ObexWebRequest(url);
MessageBox.Show(req.ContentLength.ToString(), "Content");
MessageBox.Show(file.Length.ToString(), "File");
req.ReadFile(plik);
while (req.ContentLength < file.Length)
{
progressBar1.Value = (int)req.ContentLength;
progressBar1.Refresh();
}

ObexWebResponse rsp = (ObexWebResponse)req.GetResponse();
Cursor.Current = Cursors.Default;
MessageBox.Show(rsp.StatusCode.ToString(), "Status BT");
MessageBox.Show(req.ContentLength.ToString(), "Content");
MessageBox.Show(file.Length.ToString(), "File");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}


MessageBox'y dla mojego sprawdzenia wielkosci przeczytanego pliku przed i po.

oczywiscie wartosc max ustawiona na wielkosc wysylanego pliku.Michał Klimczak edytował(a) ten post dnia 15.03.09 o godzinie 23:57
Stanisław P.

Stanisław P. Software designer

Temat: Progressbar + wysylanie via bt

Michał Klimczak:
[code]
ObexWebRequest req = new ObexWebRequest(url);
MessageBox.Show(req.ContentLength.ToString(), "Content");
MessageBox.Show(file.Length.ToString(), "File");
req.ReadFile(plik);
while (req.ContentLength < file.Length)
{
progressBar1.Value = (int)req.ContentLength;
progressBar1.Refresh();
}[/quote]
Nie znam api do obsługi obex'a, ale jeśli ten request dziedziczy po WebRequest, to pewnie albo po req.ReadFile() jest już po frytkach, albo dostajesz nieskończoną pętle na while'u (nie napisałeś jaki efekt).

Zamiast tego spróbuj wciąć streama z req.GetRequestStream() i do niego w pętli pisać po około 1K z pliku i odświeżać progressbara. (aż plik się skończy)
Potem .Close i .GetResponse
Zgaduję tylko ;)

konto usunięte

Temat: Progressbar + wysylanie via bt

Tez nie znam Obex'a ale sprawdz na dobry poczatek co tam sie dzieje, tj ile razy Ci sie wykonuje ten while (debugger, licznik - wedle gustu - VS ma naprawde potezny debugger).

Masz dwie mozliwe opcje:
1. Dostajesz wszystko na raz
2. Jest cos nie tak z odsiwerzaniem progressbara

Jakbym mial zgadywac to raczej opcja nr 1. Wtedy musisz poczytac jak uzyc Obex'a zeby przeczytac odpowiedz w kawalkach, albo wpiac sie w zdarzenie po przeczytaniu kawalka (jezeli Obex takowe posiada).
Michał Klimczak

Michał Klimczak mBank SA,
specjalista

Temat: Progressbar + wysylanie via bt

podziekowal. Dzisiaj do tego usiade i dam znac co z tego wyszlo:)

Następna dyskusja:

[WinForm] Uniwersalny progr...




Wyślij zaproszenie do