visual vectores studio reciba que programacion parametro net metodo matriz matrices generar como arreglo array c# wpf uwp

c# - vectores - Memoria insuficiente para continuar la ejecución del programa al intentar inicializar una matriz de InkCanvas en UWP



metodo que reciba un arreglo en c# (2)

Aquí está mi código:

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) { } } }

Cuando ejecuto este código en la aplicación WPF no hay problema, pero en UWP arroja una excepción: "Memoria insuficiente para continuar la ejecución del programa".

¿Son errores o algo puede alguien decirme?

Gracias.


Al analizarlo, hay otra publicación similar, que sugiere que el límite podría estar en 128 ... lo que podría ser una limitación "por diseño"

Si eso es consistente, no lo he intentado, ¿por qué no crear un conjunto de InkCanvas y reutilizar InkCanvas una vez que no están en uso? A menos que los necesites al mismo tiempo ... También eso agregaría velocidad ya que evitarías volver a crear las inkcanvas y solo las volverías a usar.

Hasta ahora, el código podría permanecer constante y puede ampliar el conjunto cuando se solucione el problema o la limitación.


El sistema operativo Windows equilibrará la memoria ubicada en la aplicación en función de la configuración de la memoria RAM y el sistema operativo. Puede verificar la configuración de la memoria de su aplicación mediante MemoryManager (como dijo cFrozenDeath) de la siguiente manera:

public MainPage() { this.InitializeComponent(); var AppUsageLevel = MemoryManager.AppMemoryUsageLevel; var AppMemoryLimit = MemoryManager.AppMemoryUsageLimit; }

Según mi prueba, tu aplicación se queda sin memoria. Puede hacer una prueba simple: en el ciclo for cada vez que imprima InkCanvas () , puede llamar a MemoryManager.AppMemoryUsage y compararlo con MemoryManager.AppMemoryUsageLimit.

¿Podrías decirme si tienes alguna razón específica para crear UIElment de esa manera? Win10 1.586 proporciona una nueva API, TrySetAppMemoryUsageLimit, para establecer la limitación de la memoria de la aplicación. Sin embargo, según la discusión interna, esta API solo funciona para escenarios muy limitados en este momento, como la aplicación VOIP en un dispositivo móvil. Y el código de muestra y el documento para esta API no están del todo listos.