private void TryUpdateAddressBook(AddressBookLocal addressBook) { UpdateTask updateTask = null; using (new ResourceCriticalOperation(addressBook)) updateTask = CreateTask(addressBook); if (updateTask != null) { var worker = new Task(StartUpdateTask, updateTask, TaskCreationOptions.PreferFairness); worker.Start(); } }
private UpdateTask CreateTask(AddressBookLocal addressBook) { Logger.LogNotice(string.Format("Trying to update address book '{0}'.Last update: {1}.", addressBook.Name, addressBook.LastUpdate)); using (new ResourceCriticalOperation((object)_tasks)) { for (int i = 0; i < MAX_PARALLEL_TASKS_COUNT; i++) { if (_tasks[i] == null) { var task = new UpdateTask(_contactsManager, _contactsManager.SqlConnection, addressBook, i); _tasks[i] = task; Logger.LogNotice(string.Format("Found empty slot to perform update for '{0}'.", addressBook.Name)); return(task); } } } return(null); }