检测Centennial应用程序启动以防止多个实例

时间:2019-07-04 18:19:58

标签: c# uwp desktop-bridge

防止WPF或WinForms应用程序的多个实例并不容易。但是,UWP应用程序自然是单个实例。由于每个Centennial(“桌面桥”)应用都是作为UWP应用在后台启动的,因此应该有某种方法可以检测到某个中央事件的启动并简单地设置一些标志,并在设置了标志的情况下阻止该应用打开

但是,我还没有找到一种方法来做到这一点。有办法吗?

1 个答案:

答案 0 :(得分:2)

  

有办法吗?

不幸的是没有。确实有一个FindOrRegisterInstanceForKey API,可让您使用密钥注册和检索特定的应用程序实例,但打包的桌面应用程序不支持该API。

您将必须自己实现此功能,例如使用def getPropertyFloorDetails={ def returnMap = [:] def propertyInst=Property.findById(Long.parseLong(params.propertyId)) def propertyFloorList=PropertyFloors.findAllByProperty(propertyInst) def propertyUnitsList=[] println(propertyFloorList) propertyFloorList.each{ def tempPropertyUnitsList=PropertyUnits.findAllByPropertyFloors(it) println(tempPropertyUnitsList) propertyUnitsList.add(tempPropertyUnitsList) } returnMap.propertyFloorList = propertyFloorList returnMap.propertyUnitsNo = propertyUnitsList render returnMap as JSON } 。不过,仅阻止多个实例运行应该非常简单。在打包的WPF应用程序中,应将Mutex文件的Build Action属性从App.xaml更改为ApplicationDefinition,以防止编译器生成默认的Page方法为你自己写一个:

Main