| File: System\Windows\Forms\Rendering\ScreenDcCache.ScreenDcScope.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; internal sealed partial class ScreenDcCache { /// <summary> /// Scope to ensure return of the device context back to the cache. /// </summary> #if DEBUG internal class ScreenDcScope : DisposalTracking.Tracker, IDisposable #else internal readonly ref struct ScreenDcScope #endif { public HDC HDC { get; } private readonly ScreenDcCache _cache; public ScreenDcScope(ScreenDcCache cache, HDC hdc) { _cache = cache; HDC = hdc; } public static implicit operator HDC(in ScreenDcScope scope) => scope.HDC; public void Dispose() { _cache.Release(HDC); DisposalTracking.SuppressFinalize(this!); } } }