1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
using System;
using System.Linq;
using System.Reactive.Linq;
using System.Windows.Forms;
using System.Reactive.Disposables;
using Excercise8.DictionarySuggestService;
namespace Excercise8
{
class Program
{
static void Main()
{
var txt = new TextBox();
var lst = new ListBox { Top = txt.Height + 10 };
var frm = new Form()
{
Controls = { txt, lst }
};
var input = (from evt in Observable.FromEventPattern(txt, "TextChanged")
select ((TextBox)evt.Sender).Text)
.Throttle(TimeSpan.FromSeconds(1))
.DistinctUntilChanged()
.Do(x => Console.WriteLine(x));
var svc = new DictServiceSoapClient("DictServiceSoap");
var matchInDict = Observable.FromAsyncPattern<string, string, string, DictionaryWord[]>
(svc.BeginMatchInDict, svc.EndMatchInDict);
Func<string, IObservable<DictionaryWord[]>> matchInWordNetByPrefix =
term => matchInDict("wn", term, "prefix");
var res = from term in input
from words in matchInWordNetByPrefix(term)
select words;
using (res.ObserveOn(lst).Subscribe(
words =>
{
lst.Items.Clear();
lst.Items.AddRange((from word in words select word.Word).ToArray());
},
ex =>
{
MessageBox.Show(
"An error occurred: " + ex.Message, frm.Text, MessageBoxButtons.OK, MessageBoxIcon.Error
);
}))
{
Application.Run(frm);
}
}
}
}
|