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

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

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

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

Спасибо.


person japf    schedule 19.10.2011    source источник


Ответы (2)


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

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

person Richard Szalay    schedule 19.10.2011
comment
Да, я думал об этой возможности. Мне интересно, есть ли более простой способ использования API... - person japf; 19.10.2011
comment
@Jalfp - К сожалению, нет. - person Richard Szalay; 19.10.2011

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

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

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

person Heinrich Ulbricht    schedule 19.10.2011