1
我想做一個監控頁面來監控各種文件系統觀察者運行做一些工作。我需要知道的是,你得到多個文件系統觀察者的訪問列表框在UI線程。這裏是一些代碼是如何做的:多元文件系統觀察者與多個列表框控件
private void WatchFile(TextBox ctrlTB,ListBox ctrlLB,FileSystemWatcher _watcher)
{
// FileSystemWatcher _watcher = new FileSystemWatcher();
//var localTB = ctrlTB as TextBox;
//var localLB = ctrlLB as ListBox;
_watcher.Path = ctrlTB.Text;
_watcher.Path = ctrlTB.Text;
_watcher.NotifyFilter = NotifyFilters.LastWrite;
_watcher.Filter = "*.xml";
_watcher.Changed += new FileSystemEventHandler(convertXML);
// _watcher.Changed += (s, e) => convertXML(s,e);
// _watcher.Error += new ErrorEventHandler(WatcherError);
_watcher.EnableRaisingEvents = true;
_watcher.IncludeSubdirectories = false;
ctrlLB.Items.Add("Started Monitoring @ " + ctrlTB.Text);
ctrlLB.SelectedIndex = ctrlLB.Items.Count - 1;
}
public void convertXML(object source, FileSystemEventArgs f)
{
/// some job
}
我需要回來後每個FileSystemWatcher的狀態返回到它的相應的列表框。我正在點擊開始按鈕來聲明FSW。每個列表框都有一個開始按鈕,它將在其中分開聲明。例如:
private void button9_Click(object sender, EventArgs e)
{
if (!Directory.Exists(this.textBox1.Text))
{
//Form2.ActiveForm.Text = "Please select Source Folder";
// popup.Show("Please Select Source Folder");
MessageBox.Show("Please Select Proper Source Folder");
return;
}
else
{
textBox1.Enabled = false;
button9.Enabled = false;
button1.Enabled = false;
// button4.Enabled = false;
FileSystemWatcher _watcher = new FileSystemWatcher();
_watcher.SynchronizingObject = this;
WatchFile(textBox1,listBox1 ,_watcher);
}
}
線程如何知道要訪問哪個控件列表框。非常感謝答覆。
這看起來不錯,可以理解。讓我試試這個,我會很快回復你。謝謝。 – user726720 2014-09-23 15:32:27
+1以便說明。 – user726720 2014-09-23 15:32:52
不用擔心隊友。很高興有幫助。 – Adrian 2014-09-23 23:22:36