ASP.NET Zone

Die ASP.NET Community. Alle Antworten rund um Microsoft® Webtechnologien
Willkommen bei ASP.NET Zone. Anmelden | Registrieren | Hilfe | Impressum | ASP.NET Zone Suchplugin

in
Home Blogs Foren FAQ Communities Fotos Downloads
Werbeanzeige

Asynchrones Abfragen mehrerer HTTP-Adressen - HTTPWebrequest

Letzter Beitrag 03-13-2012, 9:48 von Bytechanger. 2 Antworten.
Beiträge sortieren: Zurück Weiter
  •  03-13-2012, 5:56 224039

    Asynchrones Abfragen mehrerer HTTP-Adressen - HTTPWebrequest

    Hallo,

    ich möchte in ASP.NET mehrere Seiten asynchron abfragen und den Seitenquelltext (HTML) auswerten.
    Ich habe nun hier ein Codebeispiel gefunden:

    http://www.developerfusion.com/code/4654/asynchronous-httpwebrequest/

    Meine Frage ist, wie warte ich, wenn ich alle Requests abgesendet habe?!
    Ich muss ja nun warten, bis alle Requests entweder eingetroffen, oder aufgrund eines Timeouts abgebrochen wurden.

    Es wäre doch unschön in einer Do While Schleife zu warten. Gibt es da nicht eine Möglichkeit auf Ablauf aller
    Threads zu warten ?

    Oder gibt es in ASP.NET eine andere Möglichkeit ?

    Greets

    Byte


    Umsteiger von VB6 auf VB.NET / ASP.NET
    --- NUR Framework 2.0 möglich !!! ---


    ansonten: PHP, Java, JavaScript, VBA
  •  03-13-2012, 8:24 224040 Antwort zu 224039

    AW: Asynchrones Abfragen mehrerer HTTP-Adressen - HTTPWebrequest

    Schau dir das mal an:


    Eigentlich ist es so gedacht, dass Du einen Thread startest der dann die Anfrage sendet sich dann "schlafen legt" und auf Antwort wartet. Wenn die Antwort da ist meldet er sich im Hauptthread.

    Mit freundlichen Grüßen Matthias
    ------
    Der Datenweg durchs Internet
    .ml-webservices
  •  03-13-2012, 9:48 224041 Antwort zu 224040

    AW: Asynchrones Abfragen mehrerer HTTP-Adressen - HTTPWebrequest

    Hi,

    also mien Problem ist ja...

    In ASP.NEt wird ein Request durch Aufruf einer Seite/eines Handlers gestartet.
    Der wird abgearbeitet. Ist er abgearbeitet, ist das Ding durch, also der Request beendet.

    Ich muss 5-10 Seiten asynchron aufrufen und dann im Haupttread irgendwie warten, bis alle durchgelaufen (oder TimeOut) sind.

    Dann erst weiter Arbeiten und schließlich den Request beenden!

    Also im Grunde
    für jede der 5-10 Seiten folgender Aufruf
    Dim result As IAsyncResult = request.BeginGetResponse(New AsyncCallback(AddressOf UpdateItem), state)
    ThreadPool.RegisterWaitForSingleObject(result.AsyncWaitHandle, New WaitOrTimerCallback(AddressOf ScanTimeoutCallback), state, (10 * 1000), True)


    (in UpdateItem würde ich dann weitermachen, wenn die Seite geladen wurde
    oder in ScanTimeoutCallback wenn mehr als 10 Sekunden vergangen sind)

    Nachdem alle Seiten-Threads gestartet wurden
    WARTEN bis ALLE THREADS beendet sind.
    Ich könnte ja mit
    Do

    if AnzahlSeitenaufrufe < 1 then

    'JETZT BEENDEN

    exit do

    endif

    LOOP

    Dauernd die Bedingung abfragen, was aber zu viel Performance kostet und sehr ineffektiv ist!
    Ich belaste den Prozessor des Servers unnötig!

    Greets

    Byte


    Umsteiger von VB6 auf VB.NET / ASP.NET
    --- NUR Framework 2.0 möglich !!! ---


    ansonten: PHP, Java, JavaScript, VBA
Als RSS Feed in XML ansehen
Powered by Community Server (Commercial Edition)