wcf 호출에 대해 관찰 가능한 래퍼를 만들려고하는데 다음과 같이 작성했습니다.관찰 가능에 대한 구독이 완료되지 않음
방법은 다음과 같이이다
private IObservable<List<string>> Search(string searchTerm)
{
return Observable.Create<List<string>>(o =>
{
var searchClient = new SearchServiceClient();
var s = Observable
.FromEventPattern<SearchCompletedEventArgs>(searchClient, "SearchCompleted");
var subscription = s.Subscribe(
r =>
{
if (r.EventArgs.Error == null)
o.OnNext(r.EventArgs.Result);
else
{
o.OnError(r.EventArgs.Error);
}
},
e =>
{
o.OnError(e);
},
() =>
{
o.OnCompleted();
});
searchClient.SearchAsync(searchTerm);
return subscription;
});
}
및 메소드 호출은,
Search("reactive").Subscribe(
r =>
{
MessageBox.Show("Result");
},
e =>
{
MessageBox.Show(e.ToString());
},
() =>
{
MessageBox.Show("Completed");
});
그러나 그것은 결코 완성 된 블록에 도달하지 않습니다. 내가 어디로 잘못 가고 있는지 제안 해 주시겠습니까? 26
감사 페 타르 Vučetin, Rarous 리 캠벨에
@Edited. 세 가지 제안을 모두 테스트했으며 모두 작동합니다. 하지만 나는 Petar의 접근법이 한 줄의 코드에만 의존하는 것을 좋아한다. Observable 인 것처럼 보이지만 AsynchronousPatterns는 depricated입니다.
최근 비트가 FromAsyncPatterns를 쓸모 없게 만든다고 생각합니다. –
나는 여전히 .net 4.0을 타겟팅하고있다. –