我在玩微軟的UWP AppServiceBridgeSample
(here)。它運行良好,但我想擺脫BackgroundProcess
應用程序的控制檯窗口。原因是我的BackgroundProcess啓動另一個Win32桌面應用程序,並且只能作爲中介,所以我不想用控制檯窗口打擾用戶。 (是的,它可以最小化,但我寧願不顯示它)。沒有控制檯窗口的AppServiceBridge
我試圖隱藏它使用API提到的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連接。
因此,這裏有我的兩個問題:
- 是它,任何機會,甚至有可能隱藏的後臺進程控制檯窗口?
- 我可以使用後臺進程作爲Windows應用程序,在調用
OpenAsync
期間沒有AppServiceConnection
失敗嗎?
我已經嘗試了兩種方法,正如我的問題所述。 不幸的是,當構建爲Window應用程序時,它運行正常,直到我調用導致BackgroundProcess應用程序退出(無一例外)的AppServiceConnection.OpenAsync()。 我確定所有引用都已到位,因爲當我將該項目切換到控制檯應用程序時,它按預期工作。 – kibitzerCZ
在完成使用過程之前,您還需要確保不要退出Main()。我已經相應地更新了我的答案,併爲您指出了一個更好的示例項目。 –
哦,我錯過了連接運行在一個獨立的線程 - 現在很清楚,主線程在等待期間退出!非常感謝您的協助和您的樣品,這給了我所需要的一切。 – kibitzerCZ