我正在使用微软的UWP AppServiceBridgeSample
(here)。
它运行良好,但我想摆脱BackgroundProcess
应用程序的控制台窗口。这样做的原因是我的BackgroundProcess
启动了另一个Win32桌面应用程序并仅作为中介使用,所以我不想用控制台窗口打扰用户。 (是的,它可以最小化,但我宁愿不显示它。)
我试图使用提到的here隐藏它,但没有运气,控制台窗口仍然可见。也没有将项目的输出类型从Console Application
切换到Windows Application
。工作。
我尝试过的另一件事是将其他BackgroundProcess
项目创建为Windows应用程序。它运行正常,直到我拨打AppServiceConnection.OpenAsync()
,这导致BackgroundProcess
应用程序退出强文,因此无法连接到UWA。
static async void ThreadProc()
{
try
{
AppServiceConnection connection = new AppServiceConnection();
connection.AppServiceName = "CommunicationService";
connection.PackageFamilyName = Windows.ApplicationModel.Package.Current.Id.FamilyName;
connection.RequestReceived += Connection_RequestReceived;
AppServiceConnectionStatus status = await connection.OpenAsync();
//status check etc. ...
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
似乎只能从控制台应用程序打开AppService连接。
所以这是我的两个问题:
AppServiceConnection
来电期间OpenAsync
没有失败?答案 0 :(得分:5)
Re 1:进入项目设置并将输出类型从Console更改为Windows应用程序。在完成后台进程之前,还要确保Main()函数不会退出。这是一个更好的示例,它使用Windows应用程序显示: https://stefanwick.com/2017/05/26/uwp-calling-office-interop-apis/
Re 2:AppServiceConnection也以与窗口化应用程序相同的方式工作。确保添加对Windows.winmd的正确引用以便能够构建。如果您遇到问题,请发布一个特定问题,详细说明您遇到的问题