private void Run() { while (isRunning) { if (previousScreen != null) { previousScreen.Dispose(); } if (currentScreen != null) { previousScreen = BitmapManager.CloneBitmap(currentScreen); currentScreen.Dispose(); } currentScreen = ScreenManager.Screenshot(); bool sendScreen = false; if (previousScreen != null) { if (BitmapManager.BitmapChanged(previousScreen, currentScreen, 1000000, 70)) { sendScreen = true; } } else { sendScreen = true; } if (sendScreen) { subject.Notify(BitmapManager.CloneBitmap(currentScreen)); } Thread.Sleep(100); } }