Exemple #1
0
 /// <summary>
 /// Subscribe to updates for individual entries
 /// </summary>
 private IDisposable BindEntryUpdates(
     IChatLoader chatLoader,
     IChatUpdater chatUpdater,
     IAvatarLoader avatarLoader
     )
 {
     return(chatUpdater.GetChatUpdates()
            .Buffer(TimeSpan.FromSeconds(1))
            .SelectMany(chats => chats)
            .Select(chat => new
     {
         Chat = chat,
         Entry = GetChatEntryModel(chat)
     })
            .SelectMany(item => LoadAvatar(avatarLoader, item.Entry)
                        .Select(avatar => new
     {
         Chat = item.Chat,
         Entry = item.Entry,
         Avatar = avatar
     }))
            .SubscribeOn(TaskPoolScheduler.Default)
            .ObserveOn(RxApp.MainThreadScheduler)
            .Subscribe(item =>
     {
         UpdateChatEntryModel(item.Entry, item.Chat, item.Avatar);
     }));
 }
 /// <summary>
 /// Subscribe to updates for individual entries
 /// </summary>
 private IDisposable BindEntryUpdates()
 {
     return(_chatUpdater.GetChatUpdates()
            .Buffer(TimeSpan.FromSeconds(1))
            .SelectMany(chats => chats)
            .Select(chat => new
     {
         Chat = chat,
         Entry = GetChatEntryModel(chat)
     })
            .Accept(item =>
     {
         UpdateChatEntryModel((ChatEntryModel)item.Entry, item.Chat);
     }));
 }