Example #1
0
        public void SyncTask(ISyncContext context, string taskName)
        {
            IWebSvcSyncTask <T> task;

            if (!_tasks.TryGetValue(taskName, out task))
            {
                throw new ArgumentException(@"Unknown task", "taskName");
            }
            if (!task.IsTaskActive())
            {
                throw new ApplicationException("Specified task not active now.");
            }
            PerformSyncProvider(context,
                                svc =>
                                task.Sync(
                                    context,
                                    svc,
                                    _webConSvc.GetConfig().RetriesCount,
                                    context.AppendTaskIndicator(task.GetDisplayName())));
        }
Example #2
0
 /// <summary>
 /// Запустить периодические задачи.
 /// </summary>
 public void SyncPeriodicTasks(ISyncContext context)
 {
     PerformSyncProvider(context,
                         svc =>
                         GetPeriodicTaskNames()
                         .Select(name => _tasks[name])                 // Выбираем все периодические задачи
                         .Where(task => task.IsTaskActive())           // Отфильтровываем неактивные
                         .Select(
                             task => new
     {
         Task      = task,
         Indicator = context.AppendTaskIndicator(task.GetDisplayName())
     })                                             // Создаем индикаторы
                         .ToArray()                 // Сразу выполняем. чтобы все индикаторы добавились до начала синхронизации
                         .ForEach(
                             data =>
     {
         data.Task.Sync(context, svc, _webConSvc.GetConfig().RetriesCount, data.Indicator);
         context.CheckState();
     }));
 }