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
,我可以在调用它之前确保网络可用。如果网络在更新期间被禁用,则应用程序仍会崩溃。我怎样才能避免这个问题?正如我在回复中提到的,您可能需要告诉客户在这个过程中保持网络连接,如果网络被禁用,只需重新启动应用程序并重试。我理解,那么这个问题将来会被修复吗?