Sto sviluppando un'applicazione C# Winforms, una parte dell'applicazione caricherà i file su un server web utilizzando AsyncUpload (utilizzandolo, a causa della necessità di utilizzare un callback del porge), nel C# programmaC#: blocco di una chiamata di funzione fino a condizione soddisfatta
ho ottenuto un semplice ciclo for che chiama la funzione Caricamento
for(int i=0;i < 10 ; i++)
{
Uploadfun();
}
E il divertimento non qualche magia:
Uploadfun()
{
// Logic comes here
// webClient.UploadFileAsync runs a 2nd thread to perform upload ..
webClient.UploadFileAsync(uri, "PUT", fileNameOnHD);
}
E un callback che viene chiamato w uando il caricamento asincrono è fatto
Upload_Completed_callback()
{
//Callback event
}
Modifica
La sequenza logica:
- Fun viene chiamato (da anello)
- logica divertimento viene eseguito e fatto ..
- Torna al ciclo for
- Il callback verrà chiamato eventuall y, quando UploadFileAsync (che esegue un po 'di logica in un altro thread) terminerà
Il problema si trova sul terzo punto, quando l'esecuzione ritorna al ciclo for, ho bisogno di bloccare il ciclo da continuare fino al richiamata chiamata.
Avete accesso all'implementazione 'divertente'? Probabilmente dovresti considerare di fornire un'interfaccia sincrona su cui è implementata l'API asincrona. –
Nel modo in cui lo descrivi, il tuo codice sembra sequenziale e con un singolo thread, il che significa che fino a quando non viene chiamata la funzione 'callback', il ciclo non continuerà. Per favore correggimi se ho torto fornendo una spiegazione più dettagliata. –
@Madi: quindi stai facendo questo all'indietro. Dovresti utilizzare la versione sincrona di "UploadFile" al centro della logica e utilizzare un'API asincrona su di essa se ne hai bisogno. –