當檔案被添加到 FilesFound 串列時,我試圖報告回圈中每個找到的檔案的進度,將檔案名報告給 progrechanged,并在 progresschanged 中在標簽上顯示檔案名。
回圈法
private void SearcherCore(string sDir)
{
try
{
foreach (var directory in Directory.GetDirectories(sDir))
{
foreach (var filename in Directory.GetFiles(directory))
{
using (var streamReader = new StreamReader(filename))
{
var contents = streamReader.ReadToEnd().ToLower();
if (contents.Contains(SearchText))
{
FilesFound.Add(filename);
}
}
}
SearcherCore(directory);
}
}
catch (System.Exception ex)
{
}
}
做工事件
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
if (textBoxSearchDirectory.Text != "")
{
SearcherCore(textBoxSearchDirectory.Text);
}
}
progresschanged 事件仍然沒有代碼。
uj5u.com熱心網友回復:
該BackGroundWorker.ReportProgress方法將很有用。您可以使用將intandobject作為引數的多載。
因此,當您找到一個檔案時,您會執行以下操作:
backgroundWorker1.ReportProgress(0, filename);
(所以這會在你的范圍內FilesFound.Add(filename);。
在這種情況0下percentProgress,您似乎并不關心。
然后您將實施該backgroundWorker1_ProgressChanged事件。要獲取檔案名,可以UserState使用ProgressChangedEventArgs.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/527928.html
標籤:C#表格
上一篇:我應該檢查什么來檢查我的settings.txt檔案是否存在?
下一篇:EFCore:是否可以跟蹤對新創建并添加到DbContext條目的屬性所做的更改?我不是要EntryState.Added
