Domanda

Ho un C # un'applicazione desktop, e ho utilizzare un servizio Web senza problemi (WSDL aggiunti da "aggiungere riferimenti di servizio", così creo un oggetto e chiamare le sue funzioni).

Ora, voglio usare le tecniche di polling lungo, ma non riesco a capire come fare questo dal punto di vista del cliente.

Come configurare il timeout? Dovrei usare un filo dedicato a questo? C'è un esempio per un C # applicazione desktop? (Non hanno trovato alcuna)

Grazie, Diga di

È stato utile?

Soluzione

Si dovrebbe essere in grado di configurare il timeout per l'oggetto servizio Web - i dettagli dipenderà esattamente quale classe che sta utilizzando, ma guardare WebClientProtocol.Timeout per un esempio.

Ora si potrebbe o chiamare tale modo sincrono da un thread dedicato, o si potrebbe fare un asincrono chiamare al servizio web per iniziare, specificando un callback da eseguire (probabilmente su un thread pool di thread ) quando il servizio risponde. In questo caso, si possono trovare è possibile specificare il timeout sulla chiamata asincrona in sé - ancora una volta, dipenderà esattamente che tipo di web classe di servizio proxy che hai

.

In questo modo non c'è bisogno di "sprecare" un filo solo in attesa per la risposta - ma si potrebbe scoprire che il modello di programmazione asincrona è più difficile da capire rispetto a quella sincrona. Se hai solo uno o due di queste richieste in qualsiasi momento, la coppia extra di thread è improbabile che sia un problema. Se siete in attesa di risposte da 500 diversi servizi, che è una questione diversa e il modello asincrono sarebbe sicuramente la strada da percorrere.

Altri suggerimenti

Per problemi di threading, vedere la risposta di Jon.

Per il problema di timeout, ecco la soluzione: In VS 2008, quando aggiungo un "riferimento al servizio" da un WSDL, userà WCF per difetto, e non riesco a trovare il modo di impostare un valore di timeout con esso.

Così, quando clic destro su riferimenti di servizio, devo decidere "riferimenti web" (/ aggiungere riferimento web avanzato). In questo modo, si utilizza solo servizi web "normali" e il parametro Timeout è disponibile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top