vtkRenderWindow window not responding

Hi
I am using Activiz ( VTK for .NET ) version 5.8. My application is to render a real-time 3D Point cloud. My render window crashes whenever I minimize the render window or switch tab to use other applications on my PC. Any help will be appreciated.

Here is my code snippet.
public void VTKTest1()
{

		if (render3d && numSensorsReceive > 0)
		{
			/*
			vtkTransform transform = vtkTransform.New();
			transform.Translate(0, 0, 500);
			vtkAxesActor axes = vtkAxesActor.New();
			axes.SetUserTransform(transform);
			ren1.AddActor(axes);
			*/
			renWin.AddRenderer(ren1);
			renWin.SetSize(900, 900);
			ren1.SetBackground(0, 0, 0);
			camera.SetPosition(0, 0, 750);
			camera.SetViewUp(0, 1, 0);
			//camera.OrthogonalizeViewUp();
			ren1.SetActiveCamera(camera);
			ren1.GetActiveCamera().Zoom(0.9);
			ren1.ResetCamera();
			image_filter = vtkWindowToImageFilter.New();
			image_filter.SetInput(renWin);
			image_filter.SetInputBufferTypeToRGB();
			image_filter.ReadFrontBufferOff();
			image_filter.Update();
			// Video Writer setup
			video_writer = vtkAVIWriter.New();
			video_writer.SetInputConnection(image_filter.GetOutputPort());
			string vid_3d_path = saveInfoPath + dateDataFolderSensor1 + "_" + timeDataFolderSensor1 + "_Video3D.Avi";
			video_writer.SetFileName(vid_3d_path);
			video_writer.SetRate(10);
			video_writer.Start();
			iren.SetRenderWindow(renWin);

			
			while (true)
			{
				points = vtkPoints.New();				
				points.InsertNextPoint(0, 1, 0);
				colors = vtkUnsignedCharArray.New();
				colors.SetName("colors");
				colors.SetNumberOfComponents(3);
				colors.InsertNextTuple3(250, 250, 250);
		
				if (numSensorsReceive > 0 && Sensor1Disp)
				{
					_waitHandle.WaitOne();
					if (VTK_DotNum1 > 0)
					{
						for (int i = 1; i < VTK_DotNum1; i++)
						{

							//points.InsertNextPoint((double)VTK_Det1_PclXpos[i], (double)VTK_Det1_PclZpos[i], vtkMath.Random(0, 0));
							double plot_x = -300 + (double)(600.0 * ((VTK_Det1_PclXpos[i] - pbTopViewAxisXMin) / (pbTopViewAxisXMax - pbTopViewAxisXMin)));
							double plot_z = -300 + (double)(600.0 * ((VTK_Det1_PclZpos[i] - pbTopViewAxisYMin) / (pbTopViewAxisYMax - pbTopViewAxisYMin)));
							double plot_y = -300 + (double)(600.0 * ((VTK_Det1_PclYpos[i] - pbTopViewAxisXMin) / (pbTopViewAxisXMax - pbTopViewAxisXMin)));
							points.InsertNextPoint(plot_x,plot_z, plot_y);
							colors.InsertNextTuple3(VTK_Det1_Color_R[i], VTK_Det1_Color_G[i], VTK_Det1_Color_B[i]);

						}
					}
				}
			
				
				profile = vtkPolyData.New();
				profile.SetPoints(points);
				profile.GetPointData().AddArray(colors);
				// Perform a 2D Delaunay triangulation on them.
				del = vtkDelaunay2D.New();
				del.SetInput(profile);
				del.SetTolerance(0.1);
				mapMesh = vtkPolyDataMapper.New();
				mapMesh.SetInputConnection(del.GetOutputPort());
				meshActor = vtkActor.New();
				meshActor.SetMapper(mapMesh);
				ball = vtkSphereSource.New();
				ball.SetRadius(1.3);
				ball.SetThetaResolution(4);
				ball.SetPhiResolution(4);
				balls = vtkGlyph3D.New();
				balls.SetInputConnection(del.GetOutputPort());
				balls.SetSourceConnection(ball.GetOutputPort());
				balls.SetInputArrayToProcess(3, 0, (int)vtkDataObject.FieldAssociations.FIELD_ASSOCIATION_POINTS, (int)vtkDataSetAttributes.AttributeTypes.SCALARS, "colors");
				balls.SetColorModeToColorByScalar();
				mapBalls = vtkPolyDataMapper.New();
				mapBalls.SetInputConnection(balls.GetOutputPort());
				ballActor = vtkActor.New();
				ballActor.SetMapper(mapBalls);
				//ballActor.GetProperty().SetSpecularColor(2, 2, 2);
				//ballActor.GetProperty().SetSpecular(0.1);
				//ballActor.GetProperty().SetSpecularPower(20);
				//ballActor.GetProperty().SetAmbient(0.2);
				//ballActor.GetProperty().SetDiffuse(0.9);
				ren1.AddViewProp(ballActor);
				renWin.Render();								
				double frame_rate = 1 / ren1.GetLastRenderTimeInSeconds();
				Console.WriteLine("frame rate " + frame_rate.ToString());
				image_filter.Modified();
				video_writer.Write();
				if (!render3d)
				{
					iren.Initialize();
					iren.Start();
				}
				ren1.RemoveViewProp(ballActor);
				if (isAppCloseClick)
				{
					deleteAllVTKObjects();
				}
			
			}
			

		}


	}
	vtkCamera camera = vtkCamera.New();
	vtkPoints points;
	vtkPolyData profile;
	vtkDelaunay2D del;
	vtkPolyDataMapper mapMesh;
	vtkActor meshActor;
	vtkSphereSource ball;
	vtkGlyph3D balls;
	vtkPolyDataMapper mapBalls;
	vtkActor ballActor;
	vtkRenderer ren1 = vtkRenderer.New();
	//vtkWin32OpenGLRenderWindow ren1 = vtkWin32OpenGLRenderWindow.New();
	vtkRenderWindow renWin = vtkRenderWindow.New();
	//vtkWin32OpenGLRenderWindow renWin = vtkWin32OpenGLRenderWindow.New();
	vtkRenderWindowInteractor iren = vtkRenderWindowInteractor.New();
	vtkWindowToImageFilter image_filter;
	vtkAVIWriter video_writer;
	vtkUnsignedCharArray colors;