Bonsoir,
J'aurai besoin d'un précision sur l'utilisation des delegates en c#.
j'utilise les delegates pour rafraichir l'avancement du progressbar de cette façon :
objWebclient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressBarState);
objWebclient.DownloadFileCompleted += new AsyncCompletedEventHandler(DownloadCompleted);
qui appel donc les methodes suivantes :
private void ProgressBarState(object sender, DownloadProgressChangedEventArgs e)
{
this.Invoke(objProgressBarDelegateInProgress, new object[] { e.ProgressPercentage });
}
private void DownloadCompleted(object sender, AsyncCompletedEventArgs e)
{
comptVideo = comptVideo + 1;
this.Invoke(objProgressBarDelegateCompletedHandler);
if (tablength == comptVideo)
{
MessageBox.Show("Download Completed");
}
objThreadDownloadVideo = null;//libere le thread
b_downloadCompleted = true;
}
Les delegates ci dessous sont appelés par les delegates des événements de l'objet objWebclient (this.Invoke)
private delegate void ProgressBarDelegateInProgressHandler(int percent);
private ProgressBarDelegateInProgressHandler objProgressBarDelegateInProgress;
private delegate void ProgressBarDelegateCompletedHandler();
private ProgressBarDelegateCompletedHandler objProgressBarDelegateCompletedHandler;
Cette solution marche mais ce qui me semble étonnant c'est que je sois
obligé de passer par des delegates pour appeler d'autre delegate sinon
j'ai une erreur opération interThread non valide :(
J'aurai voulu savoir si c'était normal de procéder de cette facon

.