[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/cefsharp/CefSharp/master/CefSharp.WinForms.Example/Program.cs [Back]  [Original]

// Copyright  2010 The CefSharp Authors. All rights reserved.
//
// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.

using System;
using System.Threading.Tasks;
using System.Windows.Forms;
using CefSharp.Example;
using CefSharp.Example.Handlers;
using CefSharp.WinForms.Example.Handlers;
using CefSharp.WinForms.Example.Minimal;

namespace CefSharp.WinForms.Example
{
    public class Program
    {
        [STAThread]
        public static int Main(string[] args)
        {
            // DEMO: Change to true to self host the BrowserSubprocess.
            // instead of using CefSharp.BrowserSubprocess.exe, your applications exe will be used.
            // In this case CefSharp.WinForms.Example.exe
            const bool selfHostSubProcess = false;

            if (selfHostSubProcess)
            {
                var exitCode = CefSharp.BrowserSubprocess.SelfHost.Main(args);

                if (exitCode >= 0)
                {
                    return exitCode;
                }

#if DEBUG
                if (!System.Diagnostics.Debugger.IsAttached)
                {
                    MessageBox.Show("When running this Example outside of Visual Studio " +
                                    "please make sure you compile in `Release` mode.", "Warning");
                }
#endif

                var settings = new CefSettings();
                settings.BrowserSubprocessPath = System.IO.Path.GetFullPath("CefSharp.WinForms.Example.exe");

                Cef.Initialize(settings);

                Application.EnableVisualStyles();
                var browser = new SimpleBrowserForm();
                Application.Run(browser);
            }
            else
            {
#if DEBUG
                if (!System.Diagnostics.Debugger.IsAttached)
                {
                    MessageBox.Show("When running this Example outside of Visual Studio " +
                                    "please make sure you compile in `Release` mode.", "Warning");
                }
#endif

                // DEMO: To integrate CEF into your applications existing message loop 
                // set multiThreadedMessageLoop = false;
                const bool multiThreadedMessageLoop = true;
                // When multiThreadedMessageLoop = true then externalMessagePump must be set to false
                // To enable externalMessagePump set  multiThreadedMessageLoop = false and externalMessagePump = true
                const bool externalMessagePump = false;

                //TEST: There are a number of different Forms for testing purposes.
                var browser = new BrowserForm(multiThreadedMessageLoop);
                //var browser = new SimpleBrowserForm();
                //var browser = new TabulationDemoForm();

                IBrowserProcessHandler browserProcessHandler;

                if (multiThreadedMessageLoop)
                {
                    browserProcessHandler = new BrowserProcessHandler();
                }
                else
                {
                    if (externalMessagePump)
                    {
                        //Get the current taskScheduler (must be called after the form is created)
                        var scheduler = TaskScheduler.FromCurrentSynchronizationContext();
                        browserProcessHandler = new ScheduleMessagePumpBrowserProcessHandler(scheduler);
                    }
                    else
                    {
                        //We'll add out WinForms timer to the components container so it's Diposed
                        browserProcessHandler = new WinFormsBrowserProcessHandler(browser.Components);
                    }

                }

                var settings = new CefSettings();
                settings.MultiThreadedMessageLoop = multiThreadedMessageLoop;
                settings.ExternalMessagePump = externalMessagePump;

                CefExample.Init(settings, browserProcessHandler: browserProcessHandler);

                Application.EnableVisualStyles();
                //Application.Run(new MultiFormAppContext());
                Application.Run(browser);
            }

            return 0;
        }
    }
}

Web Proxy Viewer  |  New URL  |  Original Page