【发布时间】:2012-11-23 10:47:35
【问题描述】:
我创建了一个应用程序,它将仅监视某个文件夹中新创建的文件并将其列出在列表框中,现在我想做的是每次它会检测到应用程序将读取它并在其中显示文本的文件列表框,我几乎得到了,因为有时当它检测到 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());
}
});
【问题讨论】:
标签: c# multithreading task filesystemwatcher