Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Asinhrono preuzimanje sadrzaja - C# .NET

[es] :: .NET :: Asinhrono preuzimanje sadrzaja - C# .NET

[ Pregleda: 1609 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Milantex
Milan Tair
Beograd

Član broj: 137126
Poruke: 60
*.adsl-1.sezampro.yu.

Sajt: www.milantex.info


+1 Profil

icon Asinhrono preuzimanje sadrzaja - C# .NET25.09.2009. u 00:48 - pre 177 meseci
Pozdrav koleZe,
Imam pitanje u vezi asinhronog prenosa podataka.

Naime, imam sajt poput www.sajt.com/file.xml i .NET aplikaciju (kucam C#) i potrebno mi je da asinhrono preuzmem xml iz file.xml na sajtu u neku lokalnu XmlDocument promenljivu u jednoj od metoda u programu.

Kada pokusam preko WebClient DownloadStringAsync metode (koja bi trebalo da, je l', "asinhrono" bez blokiranja thread-a prenese sadrzaj i pozove metod koji povezem sa DownloadStringCompleted radi dalje obrade), desi se to da mi "ipak" program zabode kao kada prenosim sinhrono podatke.

Da li neko moze da mi ispise kratak example kako da resim ovaj problem.

Najidealnije bi bilo da mogu da napravim jednostavnu funkciju XmlDocument AsyncGetXml(Uri Path); no to ce ostati na meni, samo ako moze neko da mi pomogne da na neki nacin sprecim da mi zabode program kada pocne prenosenje preko http-a.

Hvala unapred!
 
Odgovor na temu

markopadjen
Marko Pađen
Paraćin

Član broj: 182243
Poruke: 22
93.86.183.*



+1 Profil

icon Re: Asinhrono preuzimanje sadrzaja - C# .NET25.09.2009. u 08:09 - pre 177 meseci
Pozdravi koleZi!

Ja koristim u VB.NET -u WebClient sa jednostavnim kodom:

Code:

                Dim remoteUrl As String = "http://www.sajt.com/file.xml"
                Dim myWebClient As New WebClient()
                Dim myDatabuffer As Byte() = myWebClient.DownloadData(remoteUrl)
                File.WriteAllBytes(My.Application.Info.DirectoryPath & "\file.xml", myDatabuffer)


koji pozivam iz BackgroundWorker -a.

Ne sećam se baš tačno zašto iz njega pošto sam pre nekog vremena tako uradio (a posenilio), a ne preko "normalnih" tredova. Verovatno postoji neki razlog.
E, da, ovako ne zabadA uopšte.
 
Odgovor na temu

Milantex
Milan Tair
Beograd

Član broj: 137126
Poruke: 60
*.adsl-1.sezampro.yu.

Sajt: www.milantex.info


+1 Profil

icon Re: Asinhrono preuzimanje sadrzaja - C# .NET25.09.2009. u 10:12 - pre 177 meseci
Hvala kolaZa!
Najiskrenije, ja nikada u zivotu nisam koristio backgroundWorker, a zapravo mi nije ni zapao za oko dok niste pomenuli! :D

Resio sam ovako:
Code:

        public XmlDocument GotXML = new XmlDocument();

        private void GetXMLData(Object Sender, DoWorkEventArgs e) {
            String path = "http://www.mojdomen.org/nove_poruke.php?user=Test&pass=12345";
            GotXML.Load(path);
        }

        private void button1_Click( object sender, EventArgs e ) {
            backgroundWorker.DoWork += new DoWorkEventHandler(GetXMLData);
            backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(Prikazi);
            backgroundWorker.RunWorkerAsync();
        }

        void Prikazi( object sender, RunWorkerCompletedEventArgs e ) {
            textBox1.Text = GotXML.InnerText;
        }


Ovo GetXMLData(..) ce biti izmenjeno tako da ne otvara putanju tako sto korz url prosledjuje username i pass, jer nije ni malo bezbedno,a li za probu je ok i proradili je jako lepo i nekim cudom odgovor je stigao brzo! :D
Sada jos da to smestim u jedan metod i da napravim klasicu i super je!
Hvala jos jednom, pozz! :D
 
Odgovor na temu

kuzmam
ireland

Član broj: 46518
Poruke: 31
62.231.39.*



Profil

icon Re: Asinhrono preuzimanje sadrzaja - C# .NET25.09.2009. u 13:40 - pre 177 meseci
Pogledaj HttpWebRequest/HttpWebResponse i REST primere za C# u kom radis. Resices problem i ovih sifri koje prenosis u plain textu.
Asihron poziv jednostavno mozes da izvedes kreiranjem odgovarajuceg delegate-a koji instanciras prosledjujuci mu odgovarajucu metodu (u tvom primeru za citanje xml sa servera) i zatim zoves BeginInvoke koji ti vraca IAsyncResult, a kome prosledjujes svoju callback funkciju...itd. Probinguj malo :)


 
Odgovor na temu

Milantex
Milan Tair
Beograd

Član broj: 137126
Poruke: 60
*.adsl-1.sezampro.yu.

Sajt: www.milantex.info


+1 Profil

icon Re: Asinhrono preuzimanje sadrzaja - C# .NET26.09.2009. u 01:10 - pre 177 meseci
Razumem u potpunosti nacin rada sa delegatima i iasyncresoultom, kao i sa callback metodama itd. :D
I to sam pokusavao i kazem... zabode program :(
Mora da na nekom nezgodnom mestu u metodama koje zovem pristupam "necemu" (a ima dosta toda) sto ne pripada threadu koji je generisao metod pozvan preko delegata i onda sve to zabaguje dok meod ne zavrsi svoj posao i onda tek vrati rezultat koji oslobodi sync upis... bla bla... ne znam da je to, ali imam osecaj.

A sto se poziva tice, da, to sam i resavao preko HttpWebRequest/Responce-a i kor Stream citanja sadrzaja u string i iz nejga generisao sa LoadXML u XmlDocument sam XML koji dalje obradjujem.

Trebalo bi da izbaci MS neku klasicu ili komponenticu koja sama kompletno uredno i bezbedno vraca XML sa poslatog URL-a + headers koji idu za poziv... :D

No, hvala u svakom slucaju koleZa, ovo REST cu da proguglam malo sta si hteo da kazes... ??? da li rest kao rest_of_the_thingies_related_to_the_aforementioned :p ili kako vec... ;)
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Asinhrono preuzimanje sadrzaja - C# .NET27.09.2009. u 09:39 - pre 177 meseci
Da li je u pitanju desktop aplikacija a iz worker threada pozivas GUI metode (npr sakrijes dugme ili slicno)? to hoce da zabode program komotno.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

[es] :: .NET :: Asinhrono preuzimanje sadrzaja - C# .NET

[ Pregleda: 1609 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.