2015-01-05 2 views
4

У меня есть фоновая задача в отдельном проекте (dll) для приложения магазина Windows.Запуск события на переднем плане при выполнении фоновой задачи одновременно?

Моя фоновая задача запускается при получении push-уведомления. Большинство времени это происходит, когда приложение не используется. Уведомление сохраняется, и когда приложение загружается снова, действие запускается на основании полученного. Это легко реализовать с помощью LocalSettings, приложение может проверить, что там что-то хранится при загрузке.

Однако, когда приложение находится на переднем плане, я хочу вызвать что-то в самом приложении. Не постоянно глядя на LocalSettings, есть ли механизм, который я могу использовать, чтобы связать задачу с основным приложением, чтобы вызвать что-то?

ответ

1

Без особого вопроса трудно предложить конкретные советы.

Однако, на WinRT я считаю, что ваш лучший вариант - использовать сокеты для связи между фоновыми и передними процессами. Именованный канал будет предпочтительнее, но, похоже, он не поддерживается на WinRT.

Другим вариантом, который поддерживается в WinRT, является названный мьютексом. Но это не может передавать данные; его можно использовать только для подачи какого-либо сигнала от одного процесса к другому, и нет встроенного асинхронного механизма ожидания для мьютекса, в то время как сокеты могут использоваться асинхронно.

Таким образом, IMHO основанный на сокетах подход является лучшим выбором для такого рода уведомлений.

Я действительно не делал такого рода вещи на WinRT специально, как раз в других контекстах. Но одно ограничение, с которым вы столкнулись, похоже, заключается в том, что WinRT разрешит только обмен данными между двумя программами из одного пакета. См. Is there any Inter Process Communication mechanism available in Metro Style App? для получения более подробной информации по этому вопросу. Мне не совсем ясно, действительно ли это относится к сокетам или нет, и я не проверял его, чтобы видеть. Это было бы достаточно легко для вас попробовать.

Другой альтернативой может быть использование WNS: Sending notifications (Windows Runtime apps). Для ваших целей я думаю, что модель «местного оповещения» будет уместна. Большая часть документации по уведомлению, по-видимому, относится к уведомлению на основе пользовательского интерфейса (плитка, значок и тост), но также существует базовый «необработанный» API уведомлений: Windows.Networking.PushNotifications namespace

Смежные вопросы