我有一個filewatcher:Systemfilewatcher火災刪除事件不能正確
private void initFileWatcherActive()
{
try
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = Global.Directory + Global.Machine + "\\" + Machines.Directories.Aktiv;
watcher.NotifyFilter = NotifyFilters.Attributes |
NotifyFilters.CreationTime |
NotifyFilters.DirectoryName |
NotifyFilters.FileName |
NotifyFilters.LastAccess |
NotifyFilters.LastWrite;
watcher.IncludeSubdirectories = false;
watcher.Filter = "*.*";
watcher.InternalBufferSize = 24000;
watcher.Created -= new FileSystemEventHandler(OnChangedActive);
watcher.Deleted -= new FileSystemEventHandler(OnChangedActive);
watcher.Created += new FileSystemEventHandler(OnChangedActive);
watcher.Deleted += new FileSystemEventHandler(OnChangedActive);
watcher.EnableRaisingEvents = true;
}
catch (Exception ex)
{
setStatus("Filewatcher konnte nicht initialisiert werden: " + ex.Message, Level.ERROR);
}
}
通過此調用:
private void OnChangedActive(object source, FileSystemEventArgs e)
{
try
{
switch (e.ChangeType)
{
case WatcherChangeTypes.Created: break;
case WatcherChangeTypes.Deleted:
break;
default:
break;
}
}
catch (Exception ex)
{
this.Dispatcher.BeginInvoke(new Action(() => setStatus(ex.Message, Level.ERROR)));
}
}
如果我在Windows資源管理器添加或刪除文件,一切工作正常。 但在我的情況下,其他.NET PROGRAMM添加文件與此代碼:
public static void add(String path, MachineOrder machineOrder, String fileExtention)
{
String filePath = path;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendLine("Auftragsnummer;" + machineOrder.Ordernumber);
stringBuilder.AppendLine("Positionsnummer;" + machineOrder.Positionnumber);
stringBuilder.AppendLine("Aenderungsdatum;" + machineOrder.Editdate.ToString("yyyy-MM-dd hh:mm:ss"));
stringBuilder.AppendLine("Menge;" + machineOrder.Amount.ToString());
stringBuilder.AppendLine("Menge fertig;" + machineOrder.AmountReady.ToString());
stringBuilder.AppendLine("Termin;" + machineOrder.Deliverydate.ToString("yyyy-MM-dd"));
stringBuilder.AppendLine("Kundennummer;" + machineOrder.Customernumber);
stringBuilder.AppendLine("Kundenname;" + machineOrder.Customername);
stringBuilder.AppendLine("Kdauf.-nummer;" + machineOrder.CustomerOrdernumber);
stringBuilder.AppendLine("Kdauf.-positionsnummer;" + machineOrder.CustomerOrdernumber);
stringBuilder.AppendLine("Modell;" + machineOrder.Modell);
foreach (KeyValuePair<String, string> characteristic in machineOrder.Charakteristics)
{
stringBuilder.AppendLine(characteristic.Key + ";" + characteristic.Value);
}
String filename = FilenameBuilder.buildFilename(machineOrder, fileExtention);
filePath = filePath + "\\" + filename;
System.IO.File.WriteAllText(filePath, stringBuilder.ToString());
}
現在filewatcher跳進創建,刪除,創建,刪除等..我不知道爲什麼
有任何想法嗎?
'FilenameBuilder.buildFilename()'做了什麼?在嘗試確定唯一的文件名時,是否有可能創建和刪除文件? – pstrjds
filenamebuilder只根據一些參數建立一個名稱。它從不創建或刪除文件系統 –