首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UWP Desktop Bridge应用程序在双击时崩溃

UWP Desktop Bridge应用程序在双击时崩溃
EN

Stack Overflow用户
提问于 2019-05-30 14:45:24
回答 2查看 385关注 0票数 0

我正在开发一个UWP桌面桥应用程序。我已经创建了打包项目,并为sideloading.When创建了一个应用程序包。单击应用程序图标一次,应用程序就会启动successfully.But,双击图标,应用程序就会崩溃。

我已经按照以下链接创建了打包项目:https://docs.microsoft.com/en-us/windows/msix/desktop/desktop-to-uwp-packaging-dot-net应用程序在单击应用程序图标时正常运行。是不是因为双击时,.exe被调用了两次,这就是崩溃的原因?

下面是后台进程的主要方法

代码语言:javascript
运行
复制
   private static void Main(string[] args)
    {
        try
        {
            connection.AppServiceName = "CommunicationService";
            connection.PackageFamilyName = Windows.ApplicationModel.Package.Current.Id.FamilyName;

            // hook up the connection event handlers
            connection.ServiceClosed += Connection_ServiceClosed;
            connection.RequestReceived += Connection_RequestReceived;

            AppServiceConnectionStatus result = AppServiceConnectionStatus.Unknown;


            // static void Main cannot be async until C# 7.1, so put this on the thread pool
            Task.Run(async () =>
            {
                // open a connection to the UWP AppService
                result = await connection.OpenAsync();

            }).GetAwaiter().GetResult();

            if (result == AppServiceConnectionStatus.Success)
            {
                while (true)
                {

                }
            }
        }
        catch (Exception)
        {
        }
    }

要调用的代码:

代码语言:javascript
运行
复制
    private async Task StartBackgroundProcess()
    {
        try
        {
            // Make sure the BackgroundProcess is in your AppX folder, if not rebuild the solution
            await Windows.ApplicationModel.FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync();
        }
        catch (Exception)
        {
            MessageDialog dialog = new MessageDialog("Rebuild the solution and make sure the BackgroundProcess is in your AppX folder");
            await dialog.ShowAsync();
        }
    }

另外,在包内清单:

代码语言:javascript
运行
复制
<desktop:Extension Category="windows.fullTrustProcess" Executable="BackgroundProcess.exe" />
    <uap:Extension Category="windows.appService">
      <uap:AppService Name="CommunicationService" />
    </uap:Extension>

代码语言:javascript
运行
复制
<rescap:Capability Name="runFullTrust" />

有可能避免崩溃问题吗?

EN

Stack Overflow用户

发布于 2019-05-31 16:07:41

请检查AppService Bridge Sample。它每次创建并启动一个单独的线程来创建一个新的AppServiceConnection实例并调用它的OpenAsync方法。

代码语言:javascript
运行
复制
static void Main(string[] args)
{
    Thread appServiceThread = new Thread(new ThreadStart(ThreadProc));
    appServiceThread.Start();
}

static async void ThreadProc()
{
    connection = new AppServiceConnection();
    connection.AppServiceName = "CommunicationService";
    connection.PackageFamilyName = Windows.ApplicationModel.Package.Current.Id.FamilyName;
    connection.RequestReceived += Connection_RequestReceived;
    AppServiceConnectionStatus status = await connection.OpenAsync();
}
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56373081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档