另一種方法是使用Rx(Reactive Extensions)框架來封裝具有一些非常有趣的特性的自動完成。
通過Rx,您可以組合(多個事件源),限制用戶輸入,以便不會壓倒源,並且最重要的是,如果用戶在搜索框中鍵入更多內容,則可以忽略舊結果(TakeUntil)。
更多信息:
Rx: Curing your asynchronous programming blues
Curing the asynchronous blues with the Reactive Extensions for .NET
例子:
SO: RX AutoCompleteBox
RxProperty = Observable.FromEvent<TextChangedEventHandler, TextChangedEventArgs>(
h => new TextChangedEventHandler(h),
h => AssociatedObject.TextChanged += h,
h => AssociatedObject.TextChanged -= h)
.Select(t => ((TextBox)t.Sender).Text)
.Throttle(TimeSpan.FromMilliseconds(400))
.SubscribeOnDispatcher()
.Take(10)
.TakeUntil(AssociatedObject.TextChanged);
相反FromEvent,你可以用FromAsync和使用代理Beginxx x Endxxx方法。
我明白了。有沒有任何選項可以使WCF調用異步? – David 2013-04-09 17:11:22
這裏有幾個鏈接例子:http://stackoverflow.com/questions/781932/async-call-to-wcf-with-c – LouD 2013-04-09 18:13:32
一些直接的WCF鏈接在這裏:http://msdn.microsoft.com/ en-us/library/ms730059.aspx,http://code.msdn.microsoft.com/windowsdesktop/How-to-Implement-a-WCF-2090bec8 – LouD 2013-04-09 18:20:47