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
codice:
function funzione_async(){
//... qua non posso ritornare niente!!!!
}
function funzione_ritorno_ok(){
//... qua ritorno il risultato della funzione_async
return risultato;
}
Dal c# ho una funzione del tipo
codice:
public Object funzioneSincrona(){
return wb.Document.InvokeScript("funzione_async", "argomenti");
}
Duque la mia funzione in c# non può ritornare direttamente il risultato della funzione javascript poichè è asincrona.
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