无需Visual Studio即可暂停简历UWP应用的应用或代码

时间:2018-12-14 23:25:14

标签: c# c++ debugging uwp suspend

我的问题类似于How to make UWP app to suspend and resume state,但是我需要一个可以提供给质量检查小组的应用程序,以便他们可以更轻松地在我的应用程序中调用Suspend and Resume。

由于Visual Studio具有“生命周期事件”工具栏,可让您挂起和恢复应用程序,因此我认为必须有随Visual Studio一起提供的应用程序可以执行此操作。但是,通过仔细阅读Visual Studio文件,我找不到这样的可执行文件。

有人知道一个可以挂起或恢复Windows应用商店应用程序的独立应用程序(是否安装了Visual Studio)?

如果没有,是否有人可以暂停或恢复任意UWP应用的示例代码?我知道有一些用于构建调试器的C ++库,但我不是C ++程序员。如果有使用C#的方法,请发布一些代码。如果必须是C ++应用程序,请发布易于构建的完整示例。

2 个答案:

答案 0 :(得分:2)

UWP提供了专用API,用于挂起和恢复应用程序: StartSuspendAsync StartResumeAsync

例如,这里是如何暂停FeedbackHub应用的方法:

var diag = await AppDiagnosticInfo.RequestInfoForPackageAsync("Microsoft.WindowsFeedbackHub_8wekyb3d8bbwe");
if (diag.Count > 0)
{
    var resourceGroups = diag[0].GetResourceGroups();
    if (resourceGroups.Count > 0)
    {
        await resourceGroups[0].StartSuspendAsync();
    }
}

请注意,您需要声明“ appDiagnostics”功能才能调用这些API:

<Package
  xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
  IgnorableNamespaces="uap mp rescap">
  ...

  <Capabilities>
    <rescap:Capability Name="appDiagnostics" />
  </Capabilities>
</Package>

答案 1 :(得分:0)

对于测试人员来说,一种可能性就是简单地最小化和最大化应用程序。这将导致暂停和恢复。

要检查应用程序是否确实已暂停和恢复,可以使用日志记录,例如MetroLog或任何其他日志记录解决方案。

要进行快速测试,可以这样做:

MetroLog

在Package Manager控制台中输入:

Install-Package MetroLog 

代码

在App构造函数中添加以下内容:

LogManagerFactory.DefaultConfiguration.AddTarget(LogLevel.Trace, LogLevel.Fatal, new StreamingFileTarget());
log = LogManagerFactory.DefaultLogManager.GetLogger<App>();

this.Suspending += OnSuspending;
this.Resuming += OnResuming;

然后有以下两种方法:

private void OnSuspending(object sender, SuspendingEventArgs e)
{
    var deferral = e.SuspendingOperation.GetDeferral();
    log.Trace("OnSuspending called");
    deferral.Complete();
}

private void OnResuming(object sender, object e)
{
    log.Trace("OnResuming called");
}

测试

  • 部署应用
  • 退出VS
  • 从Windows菜单中调用应用程序
  • 最小化和最大化应用

在文件夹ApplicationData.Current.LocalFolder中,您将找到一个新的MetroLogs文件夹,其文件名为 Log-20181216.log

在文本编辑器中将其打开:

log output

您可以看到该应用程序已暂停并恢复。

这是您要找的吗?