XMLデータをロードするプロセスのバックグラウンドスレッドを使用したい場合があります。アプリケーションが積極的に何かを行っていることをユーザーに知らせるためのプログレスバーが必要です。 私はネットを検索してこのコードを書いています。
ユーザーが[参照]ボタンをクリックしたときに、winformでtreeviewにXMLツリーをロードしたいとします。 大きなXMLファイルの場合、winformはフリーズします。バックグラウンドで作業が進行中であることをユーザーに知らせるために、進捗バーを追加します.iここでバックグラウンドワーカーを使用しました。XMLファイルをアップロードする際のプログレスバー
しかし、 "URLを空にすることはできません\ rを\ nParameter名前:URL" このメッセージを示すSystem.ArgumentExceptionのは例外を上げているxmlDocument.Load(txtFileName.Text)上;この行。
私のXMLファイルは正しいフォーマットであり、私が選択した適切な場所にあります。 しかし、私はこの例外の原因を見つけることができません。 私のコードで修正を教えてもらえますか?
おかげで....
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
ありがとう、 まだ例外が残っています。例外については、私の質問に入れてください。 –