Перед этим вы можете провести исследование с заданиями backgrond в iOS.
Самое большое изменение в iOS 7 в отношении фоновых задач - это не то, как задачи реализованы, но когда они запускаются.
Напомним, что до - 1038 * 7 задача, выполняющаяся в фоновом режиме, имела 600 секунд на выполнение. Одной из причин этого ограничения является то, что задача, выполняемая в фоновом режиме, будет держать устройство в активном состоянии в течение всей задачи:
![enter image description here](https://i.stack.imgur.com/itHJM.png)
iOS 7 фоновая обработка оптимизирована для увеличения срока службы батареи. В iOS 7 фоновый режим становится возможным c: вместо того, чтобы держать устройство в активном состоянии, задачи уважают, когда устройство переходит в спящий режим, и вместо этого выполняют их обработку кусками, когда устройство просыпается для обработки телефонных вызовов, уведомлений, входящих электронных писем. и другие распространенные прерывания. Следующая диаграмма дает представление о том, как может быть разбита задача:
![enter image description here](https://i.stack.imgur.com/vaJRI.png)
Поскольку время выполнения задачи больше не является непрерывным, задачи, выполняющие сетевые передачи должен обрабатываться по-разному в iOS 7. Разработчикам рекомендуется использовать NSURlSession API для обработки сетевых передач. В следующем разделе представлен обзор фоновых передач.
Если вы можете сохранить устройство не убитым, вы можете попробовать использовать класс System.Threading.Timer для использования Timer
чтобы реализовать то, что вы хотите:
using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
private static Timer timer;
static void Main(string[] args)
{
var timerState = new TimerState { Counter = 0 };
timer = new Timer(
callback: new TimerCallback(TimerTask),
state: timerState,
dueTime: 1000,
period: 2000);
while (timerState.Counter <= 10)
{
Task.Delay(1000).Wait();
}
timer.Dispose();
Console.WriteLine($"{DateTime.Now:HH:mm:ss.fff}: done.");
}
private static void TimerTask(object timerState)
{
Console.WriteLine($"{DateTime.Now:HH:mm:ss.fff}: starting a new callback.");
var state = timerState as TimerState;
Interlocked.Increment(ref state.Counter);
}
class TimerState
{
public int Counter;
}
}
Кроме того, сначала делайте c делитесь Фоновыми переводами заметок. Основой фоновых передач в iOS 7 - это новый NSURLSession API.