Autor Beitrag
Schnelli
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Fr 26.08.11 12:15 
Hi Zusammen,

Verstehe dieses Verhalten leider nicht.

Wenn der Button: btnGoogleSearch gedrückt wird, startet das Click_Event. Der Webclient startet und beginnt den Datentransfer.
Danach startet, nach beendetem Transfer, die Client_OpenReadComleted. Hier wird der JSON String
deserialisiert und über dad HilfsArray in die Collection GoogleCollection geschrieben.

Bis hier hin klappt alle super.

Jetzt wollte ich diese GoogleSuchAnfrage mit veränderten Startpunkt 8x durchlaufen lassen.
Wollte dazu den Button automatisch mit hilfe der globalen Variable AbfrageRunde starten.
Klappt auch.
Beim Debuggen startet wieder das Click_Event und läuft auch richtig ab. (Veränderter Startpunkt in der GoogleSuche)
Doch nach dem neuen Datentransfer startet die Client_OpenReadComleted genau bei Codezeile 24.

Sollte nicht eigentlich das Programm am Anfang von Client_OpenReadComleted wieder starten???

Hoffe jemand kann mir helfen. Verstehe dieses Verhalten nicht.

Gruß
Schnelli

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
public void btnGoogleSearch_Click(object sender, RoutedEventArgs e)
        {
            WebClient client = new WebClient();
            client.OpenReadCompleted += Client_OpenReadCompleted;
            Uri uri = new Uri("http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=" + HttpUtility.UrlEncode(this.txtGoogleSearch.Text) + "&rsz=large&start=" + AbfrageRunde*8);
            client.OpenReadAsync(uri);
        }

        void Client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
        {
            if(AbfrageRunde <= 8)
            {
                AbfrageRunde++;
                Stream stream = e.Result;
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(GoogleSearchResults));
                GoogleSearchResults results = serializer.ReadObject(stream) as GoogleSearchResults;
                GoogleResult[] HelpArray = new GoogleResult[8];
                HelpArray = results.responseData.results.ToArray();
                for (int i = 0; i <= HelpArray.Length - 1; i++)
                {
                    GoogleResult HelpGoogle = new GoogleResult(HelpArray[i].unescapedUrl, HelpArray[i].url, HelpArray[i].visibleUrl, HelpArray[i].cacheUrl, HelpArray[i].title, HelpArray[i].titleNoFormatting, HelpArray[i].content);
                    GoogleCollection.Add(HelpGoogle);
                }
                btnGoogleSearch_Click(null,null);
                this.DataContext = results.responseData;
                AbfrageRunde = 0;
            }
            
        }
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Fr 26.08.11 12:30 
user profile iconSchnelli hat folgendes geschrieben Zum zitierten Posting springen:
Doch nach dem neuen Datentransfer startet die Client_OpenReadComleted genau bei Codezeile 24.
Und warum nimmst du das an?

_________________
>λ=
Schnelli Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Fr 26.08.11 12:35 
Ich nehme es nicht an. Ich habe es beim Debuggen gesehen.