public static List <string> GenerateAnagrams(string filename, string letters) { List <string> result = new List <string>(); List <BagAnagrams> dictionary = LoadDictionary(filename); Bag bag = new Bag(letters); Anagrams.anagrams(bag, dictionary, 0, // bottom of main loop delegate() { //ProgressBar.PerformStep(); //Application.DoEvents(); }, // done pruning delegate(uint recursion_level, List <BagAnagrams> pruned_dictionary) { if (recursion_level == 0) { //ProgressBar.Maximum = pruned_dictionary.Count; //Application.DoEvents(); } }, // found a top-level anagram delegate(List <string> words) { string display_me = ""; foreach (string s in words) { if (display_me.Length > 0) { display_me += " "; } display_me += s; } result.Add(display_me); }); return(result); }