private void bgwExecuteQuery_DoWork(object sender, DoWorkEventArgs e) { try { string query = e.Argument as string; var results = service.GetQuerySolutions(query); semaMoreStop = new ManualResetEvent(false); foreach (var s in results) { winIO.WriteLine("{0}{1}", s.Solution, (s.IsLast ? null : ";")); if (s.IsLast) { break; } bool stop; WaitForMoreOrStopPressed(out stop); semaMoreStop.Reset(); if (stop) { break; } } } finally { } }