订阅Rx Observable未收到任何结果



我使用Reactive Extensions制作了一个示例应用程序。

我正在尝试根据文本框的内容不断更新建议单词的列表。然而,我的观察员从未收到任何结果。

我的代码出了什么问题?

var ts = Observable.FromEventPattern<EventArgs>(textBox1, "TextChanged");
string dicWord = string.Empty;
var input = (from es in ts
             select ((TextBox)es.Sender).Text)
            .DistinctUntilChanged()
            .Throttle(TimeSpan.FromSeconds(1));
input.ObserveOn(SynchronizationContext.Current)
     .Subscribe(x =>
     {
         label1.Text = x.ToString();
         dicWord = x.ToString();
     });
var pex = new ServiceReference1.DictServiceSoapClient("DictServiceSoap");
var match = Observable.FromAsyncPattern<string, string, string, DictionaryWord[]>
    ( pex.BeginMatchInDict, pex.EndMatchInDict );
var lookup = new Func<string, IObservable<DictionaryWord[]>>(
    word => match("wn", label1.Text, "prefix"));
var res = from term in input
          from words in lookup(term)
          select words;
using (res.ObserveOn(SynchronizationContext.Current).Subscribe(words =>
    {
        listBox1.Items.Clear();
        listBox1.Items.AddRange((from word in words select word.Word).ToArray());
    }))

您的使用块将立即处理您的订阅。Rx运行良好;-)

我建议您尝试在官方Rx实践实验室中遵循相同的教程http://download.microsoft.com/download/C/5/D/C5D669F9-01DF-4FAF-BBA9-29C096C462DB/Rx%20HOL%20.NET.pdf.

它是在Rx 1.0的时间框架内编写的,但你应该能够让它在Rx 2.1中相对无痛地工作,希望它能为你填补空白。

相关内容

  • 没有找到相关文章

最新更新