UWP AppDiagnostic:System.AccessViolationException

问题描述

我正在运行Windows服务(C#、. NET Framework 4.7.2),该服务管理UWP应用。

在必需的功能中,我需要知道UWP应用是否正在运行。

要了解正在运行的Windows Store Apps的列表,我使用以下代码: (基于https://blogs.windows.com/windowsdeveloper/2017/06/28/uwp-app-diagnostics/

private static async Task<List<AppDiagnosticInfo>> GetWindowsStoreApps()
{
    var apps = new List<AppDiagnosticInfo>();

    var diagnosticAccessStatus = await AppDiagnosticInfo.RequestAccessAsync();
    if (diagnosticAccessStatus != DiagnosticAccessStatus.Allowed)
        return apps;

    var processes = ProcessDiagnosticInfo.GetForProcesses();

    foreach (var process in processes)
    {
        try
        {
            if (!process.IsPackaged)
                continue;

            IList<AppDiagnosticInfo> diagnosticInfos = process.GetAppDiagnosticInfos();
            if (diagnosticInfos == null || diagnosticInfos.Count < 1)
                continue;

            apps.Add(diagnosticInfos[0]);
        }
        catch
        {
            continue;
        }
    }

    return apps;
}

我会定期使用Timer调用此方法。最终,它会由于以下异常而使服务崩溃(try {} catch {}无济于事)。

引发的异常:...中的“ System.AccessViolationException” ...

中发生了类型为'System.AccessViolationException'的未处理异常

在尝试访问IsPackaged属性时会发生这种情况。

为什么崩溃?是否因为它不是在UWP应用程序中运行? 有人知道检索UWP应用列表(名称和进程ID)的任何替代方法吗?

感谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...