Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 来自Windows服务的Launchurisync调用不会启动UWP应用程序_C#_Uwp_Windows Services_Url Scheme - Fatal编程技术网

C# 来自Windows服务的Launchurisync调用不会启动UWP应用程序

C# 来自Windows服务的Launchurisync调用不会启动UWP应用程序,c#,uwp,windows-services,url-scheme,C#,Uwp,Windows Services,Url Scheme,我做了一个windows服务,应该从某个事件启动UWP应用程序。我采用的方法是通过UWP应用程序的协议扩展。我读到过这种方法 我已经通过在浏览器地址栏中键入uri字符串(即“myapp:”来验证uri是否正常工作myapp://test)但当我在windows服务中尝试这些时,我得到了一个成功的返回值,但UWP应用程序从未启动 我的调用函数如下所示: ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new

我做了一个windows服务,应该从某个事件启动UWP应用程序。我采用的方法是通过UWP应用程序的协议扩展。我读到过这种方法

我已经通过在浏览器地址栏中键入uri字符串(即“myapp:”来验证uri是否正常工作myapp://test)但当我在windows服务中尝试这些时,我得到了一个成功的返回值,但UWP应用程序从未启动

我的调用函数如下所示:

ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
     new WindowsService ()
};
ServiceBase.Run(ServicesToRun);
async private void LaunchApp()
{
WriteToFile(“启动应用程序函数”);
尝试
{
uri=新uri(@“myapp://test");
WriteToFile(“创建的URI”);
var success=wait Launcher.launchurisync(uri);
如果(成功)
{
WriteToFile(“URI启动”);
}
其他的
{
WriteToFile(“URI启动失败”);
}
}捕集物(捕集物)
{
书面文件(“电子例外”);
}
捕获(ufe异常)
{
写入文件(“UFE例外”);
}
}
我担心由于服务与用户桌面分离,Launchurisync API可能无法看到包。但我还不能证实这一点

更新

我通过连接了调试器的控制台应用程序运行服务,并在函数调用上设置了断点。UWP已成功打开。虽然这是一个积极的观察,但我的服务不应该像这样运行

更新2
: 我忘了提到调试代码的启动过程和生产版本是不同的。UWP应用程序启动时没有出现问题的调试代码如下:

 WindowsService service1 = new WindowsService ();
 service1.TestStartupAndStop(args); // calls this.OnStart(), sleeps for 2 secs, then calls this.OnStop()
我的生产代码由
ServiceBase
运行,如下所示:

ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
     new WindowsService ()
};
ServiceBase.Run(ServicesToRun);

是否允许您的服务与桌面交互(登录选项卡)?我已在windows服务(ms设置:显示)中测试了上述代码以启动系统设置,它运行良好。请检查uri是否正确。我允许服务与桌面交互,但它不起作用。我还尝试了“ms设置”,这一个很有效。这很奇怪,我可能不得不尝试从其他类型的窗口应用程序调用UWP应用程序。我通过连接了调试器的控制台应用程序运行服务,并在函数调用上设置了断点。UWP已成功打开。虽然这是一个积极的观察,但我的服务不应该像这样运行。为什么在正常的服务执行过程中不能显示相同的行为?您在UWP应用程序中处理过吗?