这是我的代码:
public sealed partial class MainPage : Page
{
InkCanvas[] arrInkCanvas = null;
public MainPage()
{
this.InitializeComponent();
int i = 0;
arrInkCanvas = new InkCanvas[1000];
try
{
for (i = 0; i < 1000; i++)
{
arrInkCanvas[i] = new InkCanvas();
}
}
catch (Exception ex)
{
}
}
}
当我在 WPF 应用程序中运行此代码时没有问题,但在 UWP 中它会抛出异常:“内存不足,无法继续执行程序。”
这是错误还是有人可以告诉我什么?
谢谢。
最佳答案
Windows 操作系统将根据 RAM 和操作系统配置平衡位于应用程序的内存。您可以通过MemoryManager检查应用程序的内存配置(正如cFrozenDeath所说),方法如下:
public MainPage()
{
this.InitializeComponent();
var AppUsageLevel = MemoryManager.AppMemoryUsageLevel;
var AppMemoryLimit = MemoryManager.AppMemoryUsageLimit;
}
根据我的测试,您的应用程序确实耗尽了内存。您可以做一个简单的测试:在每次new InkCanvas()的for循环中,您可以调用MemoryManager.AppMemoryUsage并将其与MemoryManager.AppMemoryUsageLimit进行比较。 p>
您是否有任何以这种方式创建 UIElment 的具体原因? Win10 1.586 确实提供了一个新的 API TrySetAppMemoryUsageLimit 来设置应用程序的内存限制。然而,根据内部讨论,该API目前仅适用于非常有限的场景,例如移动设备上的VOIP应用程序。而且该 API 的示例代码和文档还没有准备好。
关于c# - 尝试在 UWP 中初始化 InkCanvas 数组时内存不足,无法继续执行程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34253487/