C# 启动另一个后台应用程序的后台应用程序

C# 启动另一个后台应用程序的后台应用程序,c#,.net-core,windows-10-iot-core,background-application,C#,.net Core,Windows 10 Iot Core,Background Application,我有一个运行Windows10IoT内核的Raspberry Pi3,上面运行一个backgroundapplication1(BGA1) 我可以从BGA1启动另一个backgroundapplication2(BGA2)吗?并从BGA1终止BGA2?不,您不能: 在机器启动时启动并连续运行,无任何进程生命周期管理资源使用限制 因此,所有后台应用程序都是在机器启动时启动的。他们可以控制自己的生命周期(通过选择退出),但没有人可以直接关闭它。可能会有所帮助 以下是从另一个后台应用程序启动后台应用程

我有一个运行Windows10IoT内核的Raspberry Pi3,上面运行一个backgroundapplication1(BGA1)

我可以从BGA1启动另一个backgroundapplication2(BGA2)吗?并从BGA1终止BGA2?

不,您不能:

在机器启动时启动并连续运行,无任何进程生命周期管理资源使用限制

因此,所有后台应用程序都是在机器启动时启动的。他们可以控制自己的生命周期(通过选择退出),但没有人可以直接关闭它。

可能会有所帮助

以下是从另一个后台应用程序启动后台应用程序的简单代码示例:

namespace BackgroundApplicationStarter
{
    public sealed class StartupTask : IBackgroundTask
    {
        public void Run(IBackgroundTaskInstance taskInstance)
        {
            var deferral = taskInstance.GetDeferral();     

            StartApp();
        }

        private async void StartApp()
        {
            string fullPackageNameEncoded = System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes("BackgroundApplication1234-uwp_1.0.0.0_arm__a48w6404kk2ea"));

            Uri endpoint = new Uri("http://127.0.0.1:8080/api/iot/appx/app?appid=" + fullPackageNameEncoded);

            var client = new System.Net.Http.HttpClient();
            var byteArray = Encoding.ASCII.GetBytes("[insert your user name]:[insert your user password]");
            client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("basic", Convert.ToBase64String(byteArray));

            HttpContent content = new StringContent("", Encoding.UTF8);
            System.Net.Http.HttpResponseMessage response = await client.PostAsync(endpoint, content);
            HttpContent responseContent = response.Content;

            Debug.WriteLine("Response StatusCode: " + (int)response.StatusCode);
        }
    }
}
完成部署后,您可以从设备门户或Visual Studio获取完整的包名


谢谢您的快速回答。