J'essaie de créer une barre de progression qui fonctionnera de manière asynchrone avec le processus principal. Je suis créé un nouvel événement et a invoqué mais chaque fois que je puis essayer d'effectuer des opérations sur la barre de progression, je reçois l'erreur suivante:WPF: Barre de progression asynchrone
« Le thread appelant ne peut pas accéder à cet objet parce qu'un autre thread est le propriétaire »
Le code suivant est une tentative d'envoi d'une instance de la barre de progression à l'événement en tant qu'objet, il a manifestement échoué mais cela vous donne une idée de l'apparence du code.
private event EventHandler importing;
void MdbDataImport_importing(object sender, EventArgs e)
{
ProgressBar pb = (ProgressBar)sender;
while (true)
{
if (pb.Value >= 200)
pb.Value = 0;
pb.Value += 10;
}
}
private void btnImport_Click(object sender, RoutedEventArgs e)
{
importing += new EventHandler(MdbDataImport_importing);
IAsyncResult aResult = null;
aResult = importing.BeginInvoke(pbDataImport, null, null, null);
importing.EndInvoke(aResult);
}
Quelqu'un a-t-il des idées sur la façon de procéder? Merci d'avance SumGuy.
Cela fait grâce au travail mais il est assez lent. – SumGuy
1) Au lieu de Invoke, utilisez BeginInvoke (vous ne voulez pas que votre thread de traitement en arrière-plan attende que l'interface graphique soit redessinée, voulez-vous ?) 2) N'essayez pas de mettre à jour la progression toutes les microsecondes, choisissez un intervalle sensible. –