ファイル名を検索することから始めます。見つけたら、他のファイルを探します。最初のファイルは .xls ファイルで、正しいディレクトリにいるという署名のようなものです。次に、このディレクトリ内のすべての xml ファイルを取得します。
私は行にブレークポイントを置きます:
BeginInvoke(new Action(() => textBox1.AppendText(pResult[i-1].FullName+Environment.NewLine)));
4 つの xml ファイルが表示されます。
- ダニー.xml
- adi.xml
- yaron.xml
- shelly.xml
しかし、ブレークポイントなしでプログラムを実行すると、リストの 3 番目のファイルが 4 回しか表示されません。
- yaron.xml
- yaron.xml
- yaron.xml
- yaron.xml
誰かがなぜそれが起こっているのか指摘できますか?
public void Search(string strExtension,
DirectoryInfo di,
List<FileSystemInfo> pResult)
{
try
{
foreach (FileInfo fi in di.GetFiles())
{
if (InvokeRequired)
{
BeginInvoke(new Action(() => label2.Text = fi.Name));
}
if (fi.Name == "MessageLog.xsl")
{
foreach (FileInfo fii in di.GetFiles())
{
if (fii.Extension == strExtension)
pResult.Add(fii);
}
if (InvokeRequired)
{
BeginInvoke(new Action(() => textBox1.AppendText("Number Of History Files Found: ===> " + pResult.Count.ToString() + Environment.NewLine)));
}
for (int i = 0; i < pResult.Count; i++)
{
if (InvokeRequired)
{
BeginInvoke(new Action(() => textBox1.AppendText(pResult[i-1].FullName+Environment.NewLine)));
}
}
}
}
foreach (DirectoryInfo diChild in di.GetDirectories())
Search(strExtension, diChild, pResult);
}
catch (Exception e)
{
}
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
Search(".xml", dirinf, fsi);
}