public void StartReceiveCore([NotNull] ListInfo info, TwitterAccount account = null) { lock (_listReceiverReferenceCount) { if (_listReceiverReferenceCount.ContainsKey(info)) { _listReceiverReferenceCount[info]++; } else { _listReceiverReferenceCount.Add(info, 1); var lparam = info.ToParameter(); _receiverDictionary.Add(info, lparam); lock (_listReceivers) { var accessor = (IApiAccessor)account?.CreateAccessor() ?? new RandomAccountAccessor(); long id = account?.Id ?? 0; if (!_listReceivers.TryGetValue(id, out var receiver)) { receiver = new ListReceiver(accessor, StatusInbox.Enqueue, BackstageModel.NotifyException); _listReceivers.Add(id, receiver); ReceiveManager.ReceiveEngine.RegisterReceiver(receiver); } receiver.AddList(lparam); } } } }
public static async Task <DatabaseList> GetOrReceiveListDescription(IApiAccessor accessor, ListInfo listInfo) { return(await Task.Run(async() => { var userId = UserProxy.GetId(listInfo.OwnerScreenName); var dbl = await Database.ListCrud.GetAsync(userId, listInfo.Slug).ConfigureAwait(false); if (dbl != null) { return dbl; } var twl = await accessor.ShowListAsync(listInfo.ToParameter(), CancellationToken.None); return await SetListDescription(twl.Result).ConfigureAwait(false); }).ConfigureAwait(false)); }