| File: System\Windows\Forms\Application.MarshallingControl.cs | Web Access |
| Project: src\winforms\src\System.Windows.Forms\System.Windows.Forms.csproj (System.Windows.Forms) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. namespace System.Windows.Forms; public sealed partial class Application { internal abstract unsafe partial class ThreadContext { /// <summary> /// This class allows us to handle sends/posts in our <see cref="WindowsFormsSynchronizationContext"/> /// on the correct thread via <see cref="Control.Invoke(Action)"/>. /// </summary> private sealed class ContextMarshallingControl : Control { internal ContextMarshallingControl() : base(autoInstallSyncContext: false) { Visible = false; SetExtendedState(ExtendedStates.InterestedInUserPreferenceChanged, false); SetTopLevel(true); CreateControl(); CreateHandle(); } protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; // Message only windows are cheaper and have fewer issues than full blown invisible windows. cp.Parent = HWND.HWND_MESSAGE; return cp; } } protected override void OnLayout(LayoutEventArgs levent) { } protected override void OnSizeChanged(EventArgs e) { // Don't do anything here -- small perf game of avoiding layout, etc. } } } }