Ich denk mal, dass muss über den Filesystemwatcher laufen, weil die Dateien ja von einem externen Programm verarbeitet werden.
Oder lieg ich da falsch.
Mit den Benutzereingaben erzeuge ich eine Datei, die das externe Programm automatisch abholt und das Ergebnis in einen voreingestellten Ordner schreibt.
Da kann ich doch zwischen den Programmteilen nicht direkt mit kommunizieren.
Tüftel jetzt schon ne Weile mit den Events vom Filesystemwatcher rum, aber der liefert mir nicht das gewünschte Ergebnis
Hier mal ein kurzer Ausschnitt:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62:
| public class Data() { public event FileChanged onFileChanged;
public Data() { File.Delete(pathOUT + fileOUT); File.Delete(pathOUT + fileAlternates); SrvIN = new ServerIN(); so = new ServerOUT(); FileSystemWatcher watcher = new FileSystemWatcher(); watcher.Filter = "*.ans"; watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName; watcher.Path = pathOUT; watcher.EnableRaisingEvents = true; watcher.Changed += new FileSystemEventHandler(watcher_Changed); watcher.Created += new FileSystemEventHandler(watcher_Changed); }
void watcher_Changed(object sender, FileSystemEventArgs e) { Console.WriteLine("A new file has been created!" + e.FullPath); }
public void SetServerRequest(ServerIN si) { string firstName = ""; string lastName = ""; pathIN = @"MapGuide\DS_In\"; fileIN = "Route.asc";
if (si.FirstName!= null) FirstName= si.FirstName; if (si.LastName!= null) LastName= si.LastName; FileStream file = new FileStream(pathIN + fileIN, FileMode.OpenOrCreate, FileAccess.Write); StreamWriter sw = new StreamWriter(file); sw.WriteLine("[CLIENT]"); sw.Write("REQUEST=TRUE" + "\n"); sw.Write("Firstname=" + FirstName + "," + LastName "\n"); sw.Write("ACTION=3"); sw.Close(); file.Close(); }
public ServerOUT GetServerResult() { StreamReader myFile = new StreamReader(pathOUT + fileOUT); ...... return so; } } |
Und das wär dann der Programmteil, nur da geht er nie in den Event rein
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| private void btnCreate_Click(object sender, System.Windows.RoutedEventArgs e) { ServerIN si = new ServerIN(); si.FirstName= this.txtFirstName.Text; si.Lastname = this.txtLastName.Text; routeInfos = new MapGuide(); routeInfos.onFileChanged += new FileChanged(routeInfos_onFileChanged); routeInfos.SetServerRequest(si); ServerOUT so = routeInfos.GetServerResult(); }
void routeInfos_onFileChanged(object sender, ServerOut so) { Console.WriteLine("A new file has been created!"); } |