/// <summary> /// 加入拼合 /// </summary> /// <param name="array"></param> public void Add(params Album[] array) { for (var i = 0; i < array.Length; i++) { array[i] = array[i].Clone(); } Queues.AddRange(array); OnMergeQueueChanged(); }
public void SetQueues(params IQueue[] queues) { if (queues == null) { throw new ArgumentNullException(nameof(queues)); } Queues.Clear(); Queues.AddRange(queues); }
/// <summary> /// 加入拼合 /// </summary> /// <param name="array"></param> public void Add(params Album[] array) { for (var i = 0; i < array.Length; i++) { array[i] = array[i].Clone(); } Queues.AddRange(array); OnMergeQueueChanged(new MergeQueueEventArgs() { Mode = QueueChangeMode.Add, Tag = array }); }
async Task <bool> ExecuteLoadQueuesAsync(bool force = false) { if (IsBusy) { return(false); } var realm = App.GetRealm(); try { IsBusy = true; NoQueuesFound = false; var queues = realm.All <RealmCloudQueue>(); if (queues.Count() > 0 && force == false) { //Load from local containers var storageAccounts = realm.All <StorageAccountExt>().Where(sa => sa.IsStorageAccountOn); List <ASECloudQueue> aseQueues = new List <ASECloudQueue>(); if (storageAccounts.Count() > 0) { foreach (var queue in queues) { StorageAccountsExist = true; var storageAccount = storageAccounts.Where((arg) => arg.Name == queue.StorageAccountName).FirstOrDefault(); if (storageAccount != null) { var te = new CloudQueue(new Uri(queue.QueueUri), new Microsoft.WindowsAzure.Storage.Auth.StorageCredentials(storageAccount.Name, storageAccount.PrimaryKey)); aseQueues.Add(new ASECloudQueue(te, storageAccount.Name)); } } Queues.Clear(); Queues.AddRange(aseQueues); } } else { var storageAccounts = realm.All <StorageAccountExt>().Where(sa => sa.IsStorageAccountOn); Queues.Clear(); foreach (var account in storageAccounts) { string connectionString = Constants.StorageConnectionString; connectionString = connectionString.Replace("<ACCOUNTNAME>", account.Name); connectionString = connectionString.Replace("<ACCOUNTKEY>", account.PrimaryKey); Console.WriteLine("Connecting with: " + connectionString); CloudStorageAccount sa = CloudStorageAccount.Parse(connectionString); var queueClient = sa.CreateCloudQueueClient(); var fetchedQueues = await queueClient.ListQueuesAsync(); List <ASECloudQueue> aseQueues = new List <ASECloudQueue>(); for (int i = 0; i < fetchedQueues.Count; i++) { aseQueues.Add(new ASECloudQueue(fetchedQueues[i])); } aseQueues.All(c => { c.StorageAccountName = account.Name; return(true); }); Queues.AddRange(aseQueues); } if (storageAccounts.Count() > 0) { StorageAccountsExist = true; } else { StorageAccountsExist = false; } await realm.WriteAsync(temprealm => { temprealm.RemoveAll <RealmCloudQueue>(); foreach (var que in Queues) { temprealm.Add(new RealmCloudQueue(que.QueueName, que.StorageAccountName, que.BaseQueue.Uri.ToString())); } }); realm.All <RealmCloudQueue>().SubscribeForNotifications((sender, changes, error) => { Console.WriteLine("Change to RealmCloudQueues"); }); } SortQueues(); if (Queues.Count == 0) { NoQueuesFound = true; } else { NoQueuesFound = false; } } catch (Exception ex) { Logger.Report(ex, "Method", "ExecuteLoadQueuesAsync"); MessagingService.Current.SendMessage(MessageKeys.Error, ex); } finally { IsBusy = false; } return(true); }