uwp — использование AppService в Winrt / Stack Overflow

Я пытаюсь использовать AppService в winrt / c ++, следуя примеру github в C ++ / Cx. Я всегда получаю результат «AppUnavailable». Я подтвердил, что подключаюсь к правильному имени службы и имею правильное имя семейного пакета.

Мой appxmanifest:

  <Extensions>
<uap:Extension Category="windows.appService" EntryPoint="BlankApp5.Inventory">
<uap3:AppService Name="com.microsoft.inventory" uap4:SupportsMultipleInstances="true"/>
</uap:Extension>
</Extensions>

Заголовочный файл моего провайдера (в Mainpage.h):

namespace winrt::BlankApp5::implementation
{
class Inventory : public InventoryT<Inventory> {
public:
virtual void Run(IBackgroundTaskInstance taskInstance);

private:
BackgroundTaskDeferral mDef;
AppServiceConnection appServiceConnection;
};

Мой файл MainPage.idl:

[default_interface]
runtimeclass Inventory : Windows.ApplicationModel.Background.IBackgroundTask
{
void Run(Windows.ApplicationModel.Background.IBackgroundTaskInstance taskInstance);
}

Во время генерации IDL я получаю следующее предупреждение:

[msg]A member name has been qualified with an interface name because name collisions occurred across interface members on a runtime class. [context]"Run" has been renamed as "BlankApp5.IInventory.Run" on runtime class "BlankApp5.Inventory"

Я немного обеспокоен тем, что Inventory :: Run удаляется компоновщиком, так как он не используется внутри сервис-провайдера, но у меня нет другой идеи, почему он не работает. Поставщик и клиент находятся в двух разных решениях и не имеют ссылок друг на друга, но я предполагаю, что это не нужно. Prodiver службы был развернут, но не запущен. Запуск не имеет значения.

0

Решение

Вам не нужно объявлять void Run(Windows.ApplicationModel.Background.IBackgroundTaskInstance taskInstance); в вашем файле idl, потому что вы реализуете IBackgroundTask и void Run объявляется неявно.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector