private void AddFSScanRule(string[] values) { try { Client client = clients[listClients.SelectedIndices[0]]; FSRule rule = new FSRule(); rule.ProcessPathMatcher = values[0].Equals("Equal") ? IceStringMatcher.Equal : IceStringMatcher.Wildmat; rule.ProcessPath = values[1]; rule.PID = int.Parse(values[2]); rule.FilePathMatcher = values[3].Equals("Equal") ? IceStringMatcher.Equal : IceStringMatcher.Wildmat; rule.FilePath = values[4]; rule.DeniedOperations = int.Parse(values[5]); BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += new DoWorkEventHandler((object sender2, DoWorkEventArgs e2) => { e2.Result = ctrl.AddFSScanRule(client, rule); }); bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler((object sender2, RunWorkerCompletedEventArgs e2) => { if (e2.Error != null) { MessageBox.Show(e2.Error.Message, "Error"); return; } BackgroundWorker bw2 = new BackgroundWorker(); bw2.DoWork += new DoWorkEventHandler((object sender3, DoWorkEventArgs e3) => { e3.Result = ctrl.GetFSRules(client); }); bw2.RunWorkerCompleted += new RunWorkerCompletedEventHandler((object sender3, RunWorkerCompletedEventArgs e3) => { if (e3.Error != null) { MessageBox.Show(e3.Error.Message, "Error"); return; } SetFSRulesList(e3.Result as FSRule[]); }); bw2.RunWorkerAsync(); int ruleId = (int)e2.Result; MessageBox.Show(string.Format("FSScan rule with id {0} was added with success.", ruleId), "Success"); }); bw.RunWorkerAsync(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error"); } }