我正在使用WPF開發Conway的生命遊戲模擬器。程序佔用太多內存
由於某些原因,有時程序會佔用高達40萬K的內存(當我繪製很多單元格的速度非常快時)。
如何減少內存使用量和/或減少由此造成的滯後。
編輯1: 主窗口代碼: http://pastebin.com/mz0z7tBu
電網類: http://pastebin.com/ZHX1WBuK
細胞結構:
struct Cell
{
public int Neighbors {get; set;}
public bool Alive { get; set; }
}
編輯2: 我會盡力解釋程序結構: 單元格是包含類型爲int的AutoProperty鄰居和類型爲bool的AutoProperty IsAlive的結構。
CellGrid是一個包裝單元格的二維數組的類。 每次迭代,每個Cell's Neighbors屬性都會更新爲包含活動的Neighbors數量,然後將每個Cell的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>
任何人都很難在沒有看到代碼的情況下提供指導。 – bronsoja
你如何控制世代之間的時間? – DXM
繪圖代碼或單元代碼? @DMX沒有時間。通過點擊一個按鈕傳遞世代。 –