本文整理汇总了C#中AsyncSubject.AsObservable方法的典型用法代码示例。如果您正苦于以下问题:C# AsyncSubject.AsObservable方法的具体用法?C# AsyncSubject.AsObservable怎么用?C# AsyncSubject.AsObservable使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AsyncSubject
的用法示例。
在下文中一共展示了AsyncSubject.AsObservable方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Search
public IObservable<TwitterSearchStatus> Search(string query, int page, int rpp)
{
var subject = new AsyncSubject<IEnumerable<TwitterSearchStatus>>();
this.service.Search(query, page, rpp, (tr, res) =>
{
if (res.InnerException == null)
{
subject.OnNext(tr.Statuses);
subject.OnCompleted();
}
else
{
subject.OnError(res.InnerException);
}
});
return subject.AsObservable().SelectMany(r => r);
}
示例2: LoginAsObservable
/// <summary>
/// WebContextのログインを行う。
/// </summary>
/// <param name="self"></param>
/// <param name="userName">ユーザ名</param>
/// <param name="password">パスワード</param>
/// <returns>ユーザ情報。ログインできていない場合はnull。</returns>
public static IObservable<User> LoginAsObservable(this WebContext self, string userName, string password)
{
// Subscribeまで処理を遅延させるためDeferでくるむ
return Observable.Defer(() =>
{
var async = new AsyncSubject<User>();
// ログインを行う
var op = self.Authentication.Login(userName, password);
// Completedイベントを購読して
Observable.FromEvent<EventHandler, EventArgs>(
h => (s, e) => h(e),
h => op.Completed += h,
h => op.Completed -= h)
// 1回のイベント発火でイベントハンドラを解除する
.Take(1)
.Subscribe(_ =>
{
// キャンセルされてたら何もせず終了
if (op.IsCanceled)
{
async.OnCompleted();
return;
}
// エラーの場合はエラー通知
if (op.HasError)
{
op.MarkErrorAsHandled();
async.OnError(op.Error);
return;
}
// ユーザ情報を発行して終了。
async.OnNext(op.User as User);
async.OnCompleted();
});
return async.AsObservable();
});
}
示例3: ResolveHostName
public static IObservable<NameResolutionResult> ResolveHostName(DnsEndPoint endPoint, NetworkInterfaceInfo networkInterface)
{
Contract.Requires(endPoint != null);
Contract.Requires(networkInterface != null);
Contract.Ensures(Contract.Result<IObservable<NameResolutionResult>>() != null);
var subject = new AsyncSubject<NameResolutionResult>();
try
{
DeviceNetworkInformation.ResolveHostNameAsync(
endPoint,
networkInterface,
result =>
{
var s = (AsyncSubject<NameResolutionResult>) result.AsyncState;
s.OnNext(result);
s.OnCompleted();
},
subject);
}
catch (Exception ex)
{
subject.OnError(ex);
}
return subject.AsObservable();
}