Как определить, запущено ли основное приложение из фонового агента

Я работаю над приложением WP7.5, где я использую фоновый агент для обновления плиток в фоновом режиме (когда приложение не запущено).

В методе OnInvoke агента есть ли способ узнать, запущено ли основное приложение в данный момент?

Я хотел бы обнаружить это, чтобы НЕ обновлять плитки, если приложение работает, потому что я уже обновляю их при выходе из приложения.

Спасибо.

2 ответа

Решение

Ваш единственный выбор - написать изолированное хранилище для связи, поскольку оно совместно используется как агентом, так и приложением.

Попросите основное приложение создать пустой файл при запуске и удалить его при закрытии. Затем ваш агент может определить, запущено ли приложение, проверив наличие этого файла.

Эта страница MSDN не только перечисляет неподдерживаемые API для фоновых агентов, но также подчеркивает некоторые API, которые вам рекомендуется использовать. Среди них Mutex:

Класс Mutex должен использоваться для синхронизации доступа к ресурсам, которые совместно используются приложением переднего плана и фоновым агентом, таким как файлы в изолированном хранилище.

Это должно быть именно то, что вы хотите. Создайте именованный Mutex в своем основном приложении и попробуйте открыть его в фоновом агенте. Если это удастся, значит ваше основное приложение запущено, иначе нет.

Другие вопросы по тегам