C# 当桌面网桥应用程序使用更新API时,断开网络连接将导致应用程序崩溃

C# 当桌面网桥应用程序使用更新API时,断开网络连接将导致应用程序崩溃,c#,uwp,desktop-bridge,C#,Uwp,Desktop Bridge,当网络断开连接时,使用StoreContext.cansilently下载storepackageupdates将导致应用程序崩溃,我尝试使用try Catch捕获此异常。 此外,当我使用StoreContext.TrySilentDownloadStorePackageUpdatesAsync下载更新包时,此时断开网络连接也会导致应用程序崩溃 代码段: [System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptions

当网络断开连接时,使用
StoreContext.cansilently下载storepackageupdates
将导致应用程序崩溃,我尝试使用
try Catch
捕获此异常。 此外,当我使用
StoreContext.TrySilentDownloadStorePackageUpdatesAsync
下载更新包时,此时断开网络连接也会导致应用程序崩溃

代码段:

[System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptions]
public bool CanSilentlyUpdate()
{
    try
    {
        //There will be an error:
        //    System.AccessViolationException :“Attempted to read or write protected memory. 
        //    This is often an indication that other memory is corrupt.”
        return StoreContext.GetDefault().CanSilentlyDownloadStorePackageUpdates;
    }
    catch (Exception ex)
    {
        Debug.WriteLine(ex);
        return false;
    }
}
以下是事件查看器中的错误日志:

事件日志1:应用程序:MyApp.exe框架版本:v4.0.30319 描述:由于未处理的异常,进程已终止。 异常信息:System.AccessViolationException位于 Windows.Services.Store.StoreContext.get\u可以轻松下载StorePackageUpdates()

事件日志2:出错的应用程序名称:MyApp.exe,版本:1.0.0.0, 时间戳:0x96223b82故障模块名称: Windows.ApplicationModel.Store.dll,版本:10.0.19041.329,时间 戳记:0x92fa3e59异常代码:0xc0000005故障偏移量:0x0009fcb0 故障进程id:0x6d0c故障应用程序启动时间: 0x01D651C5D86DE48故障应用程序路径:C:\Program 文件\WindowsApps\MyApp\MyApp.exe故障模块路径: C:\Windows\System32\Windows.ApplicationModel.Store.dll报告Id: d67098d6-39c7-4a02-a837-b523821c9ca2故障包全称:MyApp 错误包相对应用程序ID:App

事件日志3:应用程序:MyApp.exe框架版本:v4.0.30319 描述:由于未处理的异常,进程已终止。 异常信息:异常代码c0000005,异常地址7947FCB0 堆栈:

事件日志4:出错的应用程序名称:MyApp.exe,版本:1.0.0.0,时间 戳记:0x96223b82故障模块名称: Windows.ApplicationModel.Store.dll,版本:10.0.19041.329,时间 戳记:0x92fa3e59异常代码:0xc0000005故障偏移量:0x0009fcb0 出错进程id:0x36a0出错应用程序启动时间: 0x01d65131af3782e2故障应用程序路径:C:\Program 文件\WindowsApps\MyApp\MyApp.exe故障模块路径: C:\Windows\System32\Windows.ApplicationModel.Store.dll报告Id: 4a027389-345c-4f16-a605-276f2774c768故障包全称:MyApp 错误包相对应用程序ID:App


这种异常似乎无法使用托管代码捕获,我该怎么办?

与其他工程师讨论后,似乎没有其他方法来处理它。 此方法应在后台运行,以便您无法在UI线程中捕获它。它实际上绕过了dev处理异常的任何机会


我们的建议是,您需要在调用此方法之前检查网络,并在调用此方法时给出提示,告知用户保持网络连接。您可以尝试在应用程序中订阅。

您可以分享一下如何使用try-catch块的代码片段吗?何时调用CanSilentlyDownloadStorePackageUpdates方法?网络被禁用之前还是之后?@RoyLi MSFT谢谢你的回复,我已经编辑了这个问题。重现此问题非常容易,我尝试使用
[HandleProcessCorruptedStateExceptions]
,但它不起作用。何时调用CanSilentlyDownloadStorePackageUpdates方法?禁用网络之前还是之后?@RoyLi MSFT禁用网络之后。如果在禁用网络之前调用CanSilentlyDownloadStorePackageUpdates方法,它可以返回正确的值。非常感谢您的回复。对于
StoreContext.cansilently下载storepackageupdates
,我可以在调用之前检查网络状态,但是对于
StoreContext.TrySilentDownloadStorePackageUpdatesAsync
,我可以在调用它之前确保网络可用。如果网络在更新期间被禁用,则应用程序仍会崩溃。我怎样才能避免这个问题?正如我在回复中提到的,您可能需要告诉客户在这个过程中保持网络连接,如果网络被禁用,只需重新启动应用程序并重试。我理解,那么这个问题将来会被修复吗?