Я использую WPF для разработки симулятора игры жизни Конвея.
Почему-то иногда программа занимает до 400 000 КБ памяти (когда я очень быстро рисую много ячеек).
Как можно уменьшить использование памяти и / или уменьшить лаги, вызванные этим.
Редактировать 1:
Код главного окна:
http://pastebin.com/mz0z7tBu
класс сетки:
http://pastebin.com/ZHX1WBuK
структура ячейки:
struct Cell
{
public int Neighbors {get; set;}
public bool Alive { get; set; }
}
Редактировать 2:
Я постараюсь объяснить структуру программы:
Ячейка - это структура, содержащая соседей AutoProperty типа Type и AutoProperty IsAlive ofType bool.
CellGrid - это класс, который упаковывает двумерный массив ячеек.
Каждую итерацию, свойство Neighbors каждой ячейки обновляется, чтобы содержать количество живых соседей, а затем IsALive каждой ячейки устанавливается в значение true или false, в зависимости от количества соседей и предыдущего состояния IsAlive.
Класс MainWindow имеет объект типа CellGrid.
Он отображает сетку на экран.
Редактировать 3:
XAML: http://pastebin.com/Zp3dr8zc
resources.xaml:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="{x:Type MenuItem}">
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="MaxHeight" Value="32" />
</Style>
<Style TargetType="{x:Type MenuItem}" x:Key="ParentMenuItem">
<Setter Property="Width" Value="46" />
</Style>
</ResourceDictionary>