29. maj 2002 - 15:39Der er
6 kommentarer og 1 løsning
DOMdokument, problem med ASYNC attribut
Hejsa
Har lavet et program der parser der modtager noget XML, via nettet.
Det benytter sig af MS xml parser msxml4.dll.
Jeg har oprettet et DOMdokument (IXMLDOMDocument), sætter attributten async til false (skal kommunikere asynkront), og kalder dernæst load funktionen :
objdomptr.load(URL);
Det går også godt, problemet kommer hvis serveren ikke returnere svar, så vil komponenten stå og vente.
Spørgsmålet er så kan man sætte en timer op, så hvis der ikke er svar inden for 60 sekunder så afslut loaden.?
Jeg har nedenstående funktion, som kalder xml com objectet synkront, men hvordan kan jeg inkode in thread (kender desværre ikke meget til threads), så jeg kan evt afslutte kaldet til com funktion load, fx efter 60 sek, hvis der fx ikke er kommet svar inden da.
Håber på en enkelt eksempel
Mvh Michael F
int logon(void) { if (strcmp(mininput.user_id,"")==0) { IXMLDOMDocumentPtr objDOMDoc; IXMLDOMNodeListPtr NodeList = NULL; int len; char * message = new char[255]; _variant_t varOut((bool)TRUE); EVAL_HR(objDOMDoc.CreateInstance("Msxml2.DOMDocument.4.0"));
Her er et simpelt eksempel på multithreading: Du kan gøre noget lignende, altså hvor du laver dit load-kald i en tråd, således kaldet ikke blokerer for andet.
#include <stdio.h> #include <windows.h> /* For the CreateThread prototype */
long WINAPI Validate(long); /* Function prototype */
HANDLE hFreshFile; int iBytesWritten, iCount, iDataValue;
void main(void) { int iID; HANDLE hThread;
/* Step 1: Let the user input some data. */
hFreshFile = CreateFile("datafile",...) for (iCount = 0; iCount<100; iCount++) { printf("Please enter next data item: "); scanf("%d",&iDataValue); WriteFile(hFreshFile,&iDataValue,sizeof(int),&iBytesWritten,NULL); } CloseHandle(hFreshFile);
/* Dispatch a thread that does Step 2 (Validate the data) for you. */
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.