public void StartCurrentApp() { Width = (int)(Screen.PrimaryScreen.WorkingArea.Width * 0.8f); Height = (int)(Screen.PrimaryScreen.WorkingArea.Height * 0.8f); Left = Screen.PrimaryScreen.Bounds.Width / 2 - Width / 2; Top = Screen.PrimaryScreen.Bounds.Height / 2 - Height / 2; renderPanel.Update(); // // STEP ONE - Create the Winforms Control // currentControl = new RenderControl { BackColor = System.Drawing.Color.Black, Location = new System.Drawing.Point(0, 0), Size = renderPanel.Size, Dock = DockStyle.Fill, Name = "RenderControl", TabIndex = 0 }; currentControl.HandleCreated += renderControl_HandleCreated; // <- This is crucial: Prepare for STEP TWO. renderPanel.Controls.Add(currentControl); }
private void CloseCurrentApp() { if (currentApp != null) { currentApp.DeInit(); } // Clean up currentApp = null; if (currentControl != null) { currentControl.HandleCreated -= renderControl_HandleCreated; currentControl.Dispose(); renderPanel.Controls.Remove(currentControl); currentControl = null; } if (currentHost != null) { currentHost.Dispose(); currentHost = null; } // Just in case... GC.Collect(); GC.WaitForPendingFinalizers(); }