Xamarin.Forms UWP - Запрос на включение приложения при запуске - PullRequest
0 голосов
/ 17 мая 2018

Я хочу, чтобы мое приложение запускалось при входе пользователя в Windows.В настоящее время я могу сделать это, открыв Диспетчер задач> Запуск> и установив «Включить» для моего приложения.Я хочу сделать это в своем приложении, и следовал этому руководству .Однако при запросе приложения на запуск при запуске оно всегда выдает следующее исключение:

The group or resource is not in the correct state to perform the requested operation.

Это не имеет смысла для меня, так как мое приложение вызывает RequestEnableAsync() только если StartupTaskStateDisabled, как видно из моего кода ниже:

private async Task<bool> SetLaunchOnLogin_UWP_Async(bool shouldLaunchOnLogin)
{
    try
    {
        var startupTask = await StartupTask.GetAsync("MyProjectStartupId");

        switch (startupTask.State)
        {
            case StartupTaskState.Disabled:

                Debug.WriteLine("Startup is disabled. Will ask");
                // The code reaches here, but always throws an exception 
                // when calling RequestEnableAsync():
                var newState = await startupTask.RequestEnableAsync()
                return newState == StartupTaskState.Enabled;
        }
    }
    catch (Exception ex)
    {
        Debug.WriteLine(
            "SpecificPlatformFunctions_UWP - SetLaunchOnLogin_UWP_Async ERROR: " 
            + ex.ToString());
    }

    return false;
}

И вывод полной ошибки:

Startup is disabled. Will ask
Exception thrown: 'System.Exception' in System.Private.CoreLib.ni.dll
SpecificPlatformFunctions_UWP - SetLaunchOnLogin_UWP_Async ERROR: System.Exception: The group or resource is not in the correct state to perform the requested operation. (Exception from HRESULT: 0x8007139F)
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at MyProject.UWP.DependencyServices.SpecificPlatformFunctions_UWP.<SetLaunchOnLogin_UWP_Async>d__13.MoveNext()

Приведенный выше код вызывается через DependencyService, когда кнопкащелкают.

1 Ответ

0 голосов
/ 17 мая 2018

Я смог решить эту проблему, просто запустив код в главном потоке. IE, оборачивая это внутри Device.BeginInvokeOnMainThread(async () => { ... });

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...