我创建了一个应用程序,它会监视特定文件夹中仅新建的文件并在列表框中列出它们。现在我想做的是每次检测到文件时,应用程序都会读取它并在列表框中显示其文本。我几乎成功了,因为有时当它检测到2个、3个、4个、5个、6个等文件时,有时候可以正常运行,但有时也会提示错误:“由于正在被另一个进程使用,所以无法访问文件 'C:\Users\PHWS13\Desktop\7.request.xml'。”。
如何解决这个问题?以下是我的代码:
如何解决这个问题?以下是我的代码:
private void fileSystemWatcher1_Created(object sender, System.IO.FileSystemEventArgs e)
{
if (!listBox1.Items.Contains(e.FullPath))
{
//add path
listBox1.Items.Add(e.FullPath + "" + DateTime.Now.ToString());
//get the path
path = e.FullPath;
//start task
startTask();
}
}
private void startTask()
{
//start task
Task t = Task.Factory.StartNew(runThis);
}
private void runThis()
{
//get the path
string get_the_path = path;
XDocument doc = XDocument.Load(get_the_path);
var transac = from r in doc.Descendants("Transaction")
select new {
InvoiceNumber = r.Element("InvoiceNumber").Value,
};
listBox2.Invoke((MethodInvoker)delegate() {
foreach(var r in transac){
listBox2.Items.Add(r.ToString());
}
});