Results 1 to 3 of 3

Thread: MSXML: open(async);send; maar readyState blijft 1?

  1. #1
    Stijn Sanders develyoy's Avatar
    Join Date
    Jun 2008
    Location
    GentBrugge, Belgi?½
    Posts
    1,046

    MSXML: open(async);send; maar readyState blijft 1?

    Heeft iemand ervaring met XMLHTTP of ServerXMLHTTP objecten via MSXML2_TLB.pas? Het was tot nu toe mijn go-to oplossing als ik even snel een HTTP requestje te plegen had, werkt tot nu toe heel erg goed.
    Ik gebruikte tot nu toe altijd geen 'async', om het resultaat direct te pakken te krijgen, maar nu is er voor het eerst dat ik een hele hoop requests moet doen, en ik dacht ik probeer er x tegelijk met async:
    Delphi Code:
    1. uses
    2.   ActiveX, MSXML2_TLB, Variants;
    3. var
    4.   r:ServerXMLHTTP;
    5. begin
    6.   CoInitialize(nil);
    7.   r:=CoServerXMLHTTP.Create;
    8.   //...
    9.   r.open('POST',URL,true,EmptyParam,EmptyParam);//true hier om async in te schakelen
    10.   //r.readyState is hier inderdaad 1
    11.   r.setRequestHeader('Content-Type','application/json');
    12.   r.send(Data);
    13.   //r.readyState is nog altijd 1?

    terwijl in de documentatie staat dat na open en send de readyState op 2 zou moeten staan?
    En het is niet zo dat die na een tijdje pas op 2 of meer komt te staan, dat heb ik ook nagekeken...
    Doe ik iets fout? Of werkt dit gewoon niet vanuit een aparte thread?

  2. #2
    Counting your refs Paul-Jan's Avatar
    Join Date
    Feb 2002
    Location
    Lage Zwaluwe
    Posts
    2,160
    Doe je dit op een form? Die async readystate changing werkt op basis van een message pump, die moet je wel hebben draaien.

    Misschien roep ik onzin hoor, het is alweer een jaar of 10 geleden denk ik. ��

  3. #3
    Stijn Sanders develyoy's Avatar
    Join Date
    Jun 2008
    Location
    GentBrugge, Belgi?½
    Posts
    1,046
    Aha! Je zal gelijk hebben. Het draait vanuit een set worker-threads die op zich al een hoop kleine taakjes verwerken. En nu je het zegt, zal die CoInitialize per thread niet genoeg zijn. Ik herinner me dat ik in een geërfd project een message-pump in een thread zag, en ik kon niet geloven wat ik zag. Voornamelijk omdat ik zoiets nog nooit nodig heb gehad, maar hier zal ik dat inderdaad waarschijnlijk wel nodig hebben! Of ik zou moeten proberen de thread in een andere apartment te heisen, maar da's een ander verhaal, herinner ik me. Ik probeer binnenkort nog eens die message-pump per thread terug op te vissen... (Want VCL's Application.ProcessMessages is niet geschikt om vanuit threads te doen, herinner ik me)

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •