このクラスでは、txt ファイルを監視しており、すべての新しい行がハンドルです。最初の単語がStart
(2 番目がファイル名) の場合、プロセスを開いWiresahrk
てキャプチャを開始します。それがStop
i am kill the process who running で始まる場合 (すべての実行中のプロセスはリストに保存され、ファイル名に関連付けられます)
string _file = @"D:\file.txt";
public void startWatch()
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = Path.GetDirectoryName(_file);
watcher.Filter = Path.GetFileName(_file);
watcher.NotifyFilter = NotifyFilters.LastWrite;
watcher.Changed += watcher_Changed;
watcher.EnableRaisingEvents = true;
}
public void watcher_Changed(object sender, FileSystemEventArgs e)
{
readLine();
}
private void readLastLine()
{
string lastLine = string.Empty;
using (StreamReader sr = new StreamReader(_file))
{
string str = sr.ReadToEnd();
int x = str.LastIndexOf('\n');
lastLine = str.Substring(x + 1);
}
validateString(lastLine);
}
private void validateString(string str)
{
string[] arr = str.Split(' ');
if (arr.Length != 2 && arr[0] != "start" && arr[0] != "stop" && arr[0] != "finish")
return;
Tshark tshark = new Tshark(arr[1]);
tshark.startCapturing(); // Start wireshark process and start capturing
}
ファイルから最後の行を読み取った後、すべて正常に動作しますが、2 回目に読み取ろうとするとエラーが発生します。The process cannot access the file because it is being used by another process.