Un peu nouveau en C# mais j'ai un gros problème pour faire fonctionner ces choses car si mon background worker exécute un long processus en utilisant une méthode d'une autre classe, alors cette classe n'a pas accès au background worker le progrès.Comment puis-je mettre à jour une barre de progression de l'interface utilisateur ou un arrière-plan du code dans une classe distincte?
Par exemple:
private void bgWorker_DoWork(object sender DoWorkEventArgs e)
{
bgArgs args = e.Argument as bgArgs;
MyClass objMyClass = new MyClass();
MyClass.MyMethod(strValue, args.Option);
//Do something based on return value of long process.
}
Si je tente de mettre à jour bgWorker de la « MyClass » de classe, il ne peut pas « voir » bgWorker, il n'existe pas dans le contexte de la classe, il est dans l'interface utilisateur classe car dans Visual Studio, c'est là que vous le faites glisser depuis la boîte à outils. La seule façon de l'utiliser est de passer la totalité de l'interface utilisateur à la classe, ce qui crée d'autres problèmes lorsque j'essaie d'accéder à cette classe à partir de n'importe où, à l'exception du formulaire principal. De là, je viens de mettre à jour la barre de progression manuellement via ProgressBar1.PerformStep() car il traverse les boucles.
De plus, j'ai déjà changé le modificateur de ma barre de progression en interne, donc ce n'est pas que la classe ne voit pas la barre de progression.
Je pourrais être en mesure de passer le bgworker par lui-même à la classe grâce à la méthode, mais cela ne semble pas juste.
Comment vérifier la progression de la modification? Par exemple, la méthode parcourt un nombre variable de sessions sur une batterie de serveurs Citrix pour rechercher un utilisateur spécifique. Comme il commence, je l'ai mis la barre au maximum au nombre total de sessions, puis commencer la boucle, comme il boucle à travers elle étapes de la barre de progression d'un. C'est très précis, mais comment le bgworker savoir jusqu'où le progrès est? –