Je souhaite utiliser un thread d'arrière-plan pour le chargement des données XML, éventuellement avec une barre de progression pour indiquer à l'utilisateur que l'application est en train de faire quelque chose. J'ai écrit ce code en cherchant sur Internet.
Je veux charger une arborescence XML dans treeview sur winform lorsqu'un utilisateur clique sur un bouton Parcourir. Dans le cas d'un fichier XML volumineux, le winform se bloque. Pour que l'utilisateur sache qu'en arrière-plan le travail se déroule, je souhaite ajouter une barre de progression. J'ai utilisé un worker de fond ici.Barre de progression lors du chargement de fichier XML
Mais il soulève une exception System.ArgumentException montrant ce message: le XmlDocument.Load (txtFileName.Text); "L'URL ne peut pas être vide \ r \ nom nParameter url." cette ligne.
Mon fichier xml est au format correct et se trouve au bon endroit où j'ai choisi. Mais je suis incapable de trouver la cause de cette exception. Pouvez-vous s'il vous plaît aider ou me dire la correction dans mon code?
Merci ....
private void btnBrowse_Click(object sender,EventArgs e)
{
bgWorker1.RunWorkerAsync();
StripProgressBar.Value = 0;
toolStripStatusLabel1.Text = "Browsing for a Xml file";
if (open.ShowDialog(this) == DialogResult.OK)
{
txtFileName.Text = open.FileName;
initiatingTree(open.FileName); //this variable gives the name of selected file
}
while (this.bgWorker1.IsBusy)
{
StripProgressBar.Increment(1);
// Keep UI messages moving, so the form remains
// responsive during the asynchronous operation.
Application.DoEvents();
}
}//Browse button
private void bgWorker1_DoWork(object sender, DoWorkEventArgs e)
{
xmlDocument = new XmlDocument();
Thread.Sleep(5000);
xmlDocument.Load(txtFileName.Text);
btnBrowse.Enabled = false;
}
private void bgworker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
// Set progress bar to 100% in case it's not already there.
StripProgressBar.Value = 100;
if (e.Error == null)
{
MessageBox.Show(xmlDocument.InnerXml, "Download Complete");
}
else
{
MessageBox.Show("Failed to download file");
}
// Enable the Browse button and reset the progress bar.
this.btnBrowse.Enabled = true;
StripProgressBar.Value = 0;
toolStripStatusLabel1.Text = "work finished processing request.";
}//workerCompleted
merci, Encore l'exception reste.Veuillez voir l'exception ce que j'ai mis en place dans ma question. –