private unsafe void Refresh() { Screen.Lock(); var nameTable0Ptr = Screen.BackBuffer; var locking = new object(); lock (locking) { var screen = Engine.GetScreen(); var pbuff = (byte *)nameTable0Ptr.ToPointer(); for (var i = 0; i < screen.Length; i++) { pbuff[i] = screen[i]; } } Screen.AddDirtyRect(new Int32Rect(0, 0, 272, 240)); Screen.Unlock(); RaisePropertyChanged("Screen"); }