Running multiple RouteTasks consumes 50% to 100% of the CPU performance.
上次发布: June 22, 2021ArcGIS Runtime SDK
漏洞 ID 编号
BUG-000139394
已提交
April 27, 2021
上次修改时间
June 5, 2024
适用范围
ArcGIS Runtime SDK
找到的版本
100.11
操作系统
Windows OS
操作系统版本
10.0 64 Bit
状态
Known Limit
经开发团队审核,已确定此问题与不受 Esri 控制的软件的已知限制有关。 问题的“其他信息”部分可能包含进一步说明。
附加信息
This issue is specific Garbage Collection in conjunction with the x86/32-bit architecture, .NET Framework, and the pattern in which the API is used.
1. Avoid closing the MobileMapPackage between each call to RouteTask.SolveRouteAsync() (in the reproducer this is in the ProcessLocations function).
e.g.
```
streetMapPremiumPackage.Close(); // Remove this call.
```
2. Call GC.Collect/GC.WaitForPendingFinalizers before the call to streetMapPremiumPackage.Close(): When it is necessary to close the MobileMapPackage between each call to SolveRouteAsync, assign the RouteTask to null and call GC.Collect/GC.WaitForPendingFinalizers before the call to streetMapPremiumPackage.Close();.
e.g.
```
solveRouteTask = null;
GC.Collect();
GC.WaitForPendingFinalizers();
streetMapPremiumPackage.Close();
```
3. Target x64: This issue is only reproducible when the application is compiled as 32-bit (or AnyCPU + Prefer 32-bit), and not when the application is compiled as x64 (or AnyCPU and running on a x64 machine).
4. Update from .NET Framework to .NET 6: The issue was no longer reproducible after updating the repro app to .NET 6. https://docs.microsoft.com/en-us/dotnet/core/porting/upgrade-assistant-overview