新しく作成されたファイルのみを特定のフォルダーで監視し、リストボックスに一覧表示するアプリケーションを作成しました。今やりたいのは、ファイルを検出するたびに、アプリケーションがそれを読み取り、そのテキストをリストボックスに表示することです。 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());
}
});