private void getAnagrams(object state) { bRunning3 = true; string word = state + ""; Permute p = new Permute(); p.setper(word); for (int i = word.Length; i > 0; i--) { if (!bRunning3) { break; } var tl = p.Permutations.Where(x => x.Length == i).ToList(); foreach (var w in tl) { if (!bRunning3) { break; } if (diff(dtOld, DateTime.Now).TotalSeconds > 5) { this.Invoke((MethodInvoker) delegate { label6.Text = p.Permutations.Count + ""; dtOld = DateTime.Now; label8.Text = diff(dtStart, DateTime.Now).TotalSeconds + ""; }); } p.setper(w.Substring(0, i - 1)); } } List <string> strings = new List <string>(); foreach (string str in p.Permutations.Distinct <string>().ToArray()) { if (checkBox1.Checked || lw.BinarySearch(str) > 0) { strings.Add(str); } } foreach (string str in strings.OrderBy(x => x).OrderByDescending(x => x.Length)) { this.Invoke((MethodInvoker) delegate { listView1.Items.Add(str); }); } this.Invoke((MethodInvoker) delegate { label6.Text = listView1.Items.Count + ""; progressBar1.Style = ProgressBarStyle.Blocks; button3.Text = "Start"; label8.Text = diff(dtStart, DateTime.Now).TotalSeconds + ""; }); bRunning3 = false; }
private void getAnagrams(object state) { bRunning3 = true; string word = state+""; Permute p = new Permute(); p.setper(word); for(int i=word.Length;i>0;i--) { if (!bRunning3) break; var tl = p.Permutations.Where(x=>x.Length==i).ToList(); foreach (var w in tl) { if (!bRunning3) break; if (diff(dtOld, DateTime.Now).TotalSeconds > 5) { this.Invoke((MethodInvoker)delegate { label6.Text = p.Permutations.Count + ""; dtOld = DateTime.Now; label8.Text = diff(dtStart, DateTime.Now).TotalSeconds + ""; }); } p.setper(w.Substring(0, i - 1)); } } List<string> strings = new List<string>(); foreach (string str in p.Permutations.Distinct<string>().ToArray()) if (checkBox1.Checked || lw.BinarySearch(str) > 0) strings.Add(str); foreach (string str in strings.OrderBy(x => x).OrderByDescending(x => x.Length)) this.Invoke((MethodInvoker)delegate { listView1.Items.Add(str); }); this.Invoke((MethodInvoker)delegate { label6.Text = listView1.Items.Count+""; progressBar1.Style = ProgressBarStyle.Blocks; button3.Text = "Start"; label8.Text = diff(dtStart, DateTime.Now).TotalSeconds+""; }); bRunning3 = false; }