Salve, sono parecchie settimane che cerco di risolvere questo problema ma ho avuto scarsi risultati:
Sto facendo una libreria in C# che deve mettere a disposizione alcuni metodi (sincroni). Ho una form nascosta per utilizzare il componente WebBrowser che mi permette di caricare una pagina .html e utilizzare delle funzioni javascript in esso contenuti.
Il problema sta nel fatto che la funzione che devo utilizzare dal javascipt è asincrona...del tipo
Dal c# ho una funzione del tipocodice:function funzione_async(){ //... qua non posso ritornare niente!!!! } function funzione_ritorno_ok(){ //... qua ritorno il risultato della funzione_async return risultato; }
Duque la mia funzione in c# non può ritornare direttamente il risultato della funzione javascript poichè è asincrona.codice:public Object funzioneSincrona(){ return wb.Document.InvokeScript("funzione_async", "argomenti"); }
Le possibili strade da me percorse sono state le seguenti:
1) rendo la funzione javascript sincrona!!! Come? con un while(!fine_calcolo); Risultato: la cpu va al 100% e il javascript non mette a disposizione sleep() o metodi simili.
2) nel c#, dopo l'invokeScript, attendo finchè una variabili in javascript (un hidden field) non cambia stato ma il problema è che se attendo mi si blocca anche il componente webBroswer non permettendo più l'esecuzione dello script.
C'è qualche anima pia che può darmi una mano? sono disperato!
grazie mille

Rispondi quotando
