private void StartFlowButton_Click(object sender, EventArgs e) { FlowEnvironment flow = sender as FlowEnvironment; if (flow == null) { return; } flow.Start(); }
private void LoadFlowButton_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "XFlow files (*.xflow)|*.xflow|All files (*.*)|*.*"; openFileDialog.FilterIndex = 1; DialogResult result = openFileDialog.ShowDialog(); if (result != DialogResult.OK) { return; } try { FlowEnvironment flow = Service.Load(openFileDialog.FileName); flow.Start(); } catch (Exception ex) { } }
protected override void OnStart(string[] args) { Parameters = args.Where(p => p.StartsWith("/")) .Select(p => p.TrimStart('/')) .Select(p => new { Parameter = p.Trim(), Separator = p.Trim().IndexOf(':') }) .ToDictionary(p => p.Separator == -1 ? p.Parameter.ToLower() : p.Parameter.Substring(0, p.Separator).ToLower(), p => p.Separator == -1 ? null : p.Parameter.Substring(p.Separator + 1)); // Handle parameters if (Parameters.ContainsKey("log")) { LogFile = new FileInfo(Parameters["log"]); } else { LogFile = new FileInfo(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "FlowTomator.Service.log")); } // Redirect logging LogTextWriter textWriter = new LogTextWriter(); textWriter.NewLine += TextWriter_Updated; Console.SetOut(textWriter); Console.SetError(textWriter); // Start service Log.Info(Environment.NewLine); Log.Info("Starting FlowTomator service"); base.OnStart(args); // Share service via .NET remoting Log.Debug("Enabling remote monitoring"); BinaryServerFormatterSinkProvider serverProvider = new BinaryServerFormatterSinkProvider(); serverProvider.TypeFilterLevel = TypeFilterLevel.Full; IChannel channel = new IpcServerChannel("FlowTomator", "FlowTomator.Service", serverProvider); ChannelServices.RegisterChannel(channel); serviceRef = RemotingServices.Marshal(this, nameof(FlowTomatorService)); Log.Info("Service started"); // Autostart startup flows if (Settings.Default.StartupFlows != null) { foreach (string startupFlow in Settings.Default.StartupFlows) { string path = startupFlow; if (!Path.IsPathRooted(path)) { path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), path); } FlowEnvironment flow = Load(path); flow.Start(); } } Flows.CollectionChanged += Flows_CollectionChanged; }