void QueryWNIAndPopulate(object sender, DoWorkEventArgs e) { string strQuery = (string)e.Argument; // query WordNet interface List <WordNetEngine.RelativeFamily> relatives; List <WordNetEngine.POS> poses = wn.Lookup(strQuery, out relatives); if (poses.Count == 0) { WordNetEngine.POS dummyPos = new WordNetEngine.POS() { posType = 4, Senses = new List <WordNetEngine.Sense>() }; dummyPos.Senses.Add(new WordNetEngine.Sense() { Definition = "Queried term not found! Please try something different." }); poses = new List <WordNetEngine.POS>(); poses.Add(dummyPos); } // set senses to definitions list Dispatcher.BeginInvoke(() => { lstPOSs.ItemsSource = poses; }); // deal with relatives, if any foreach (WordNetEngine.RelativeFamily relFamily in relatives) { Dispatcher.BeginInvoke(new PopulateRelativesDelegate(PopulateRelatives), relFamily.RelativeFamilyName, relFamily.Terms); } }