Je travaille avec C# il y a seulement un an et demi, j'apprends. J'ai un programme qui m'aide dans mon travail, Il communique avec 4 types de bases de données sur mon lieu de travail. Cela fonctionne parfaitement, mais maintenant je veux concevoir pour le rendre beaucoup plus cool, mais je suis resté bloqué quand j'ai voulu configurer un anneau de progression, parce que mes méthodes gèlent l'interface utilisateur pendant qu'elles communiquent avec mes bases de données. Je veux configurer un travailleur de fond, j'ai essayé tout ce que j'ai trouvé, même invoquer aussi, mais rien ne l'a fait fonctionner.Comment permettre à l'arrière-planaire de mettre à jour l'interface utilisateur et de définir (métro) la progression pour cela?
public partial class MainWindow : MetroWindow
{
BackgroundWorker workerThread = null;
public MainWindow()
{
InitializeComponent();
InstantiateWorkerThread();
progressrinG.IsActive = true;
}
private void InstantiateWorkerThread()
{
workerThread = new BackgroundWorker();
workerThread.ProgressChanged += WorkerThread_ProgressChanged;
workerThread.DoWork += WorkerThread_DoWork;
workerThread.RunWorkerCompleted += WorkerThread_RunWorkerCompleted;
workerThread.WorkerReportsProgress = true;
//workerThread.WorkerSupportsCancellation = true;
}
private void WorkerThread_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
}
private void WorkerThread_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
}
private void WorkerThread_DoWork(object sender, DoWorkEventArgs e)
{
//My huge method,asking 4 database that would update UI too
//... Textboxes,Grids,Expanders.
}
private void Button3_Click(object sender, RoutedEventArgs e)
{
workerThread.RunWorkerAsync();
while (workerThread.IsBusy)
{
progressrinG.Visibility = Visibility.Visible;
}
}
}
Même avec Invoke, quand j'appuie sur le bouton, après 5-10 secondes, il termine ma méthode, mais mon application est gelé tout en le faisant et je ne vois pas le progressring.
Des idées sur ce que je fais mal? Ou que devrais-je faire? Merci d'avance!
J'essaie de trouver un exemple maintenant comment le faire, puis je vais essayer d'éditer ma méthode. Je vous remercie. Upvoted. – Tamas555