private static void ReadTextInProcess(object param) { var query = param as FileQuery; var slot = Guid.NewGuid().ToString(); MailSlotService.Create(slot); var file = query.Path; var readerProc = new ProcessStartInfo(readerPath, $"{file} {slot}") { UseShellExecute = false }; var proc = Process.Start(readerProc); bool exit = false; while (true) { exit = proc.HasExited; var line = MailSlotService.Read(slot); if (!string.IsNullOrEmpty(line)) { query.Output.Add(line); } else if (exit) { break; } } MailSlotService.Close(slot); }
static int Main(string[] args) { if (args.Length != 2) { return(-1); } var file = args[0]; var slot = args[1]; using (var reader = new StreamReader(file)) { try { while (!reader.EndOfStream) { if (!MailSlotService.Write(slot, reader.ReadLine())) { return(-1); } } } catch (Exception ex) { Console.Error.WriteLine(ex.Message); Console.Error.WriteLine(ex.StackTrace); return(-1); } } return(0); }