public override IEnumerable <DebugAllocationData> Run() { if (!isInitialized) { var input = StartupInput.GetDefault(); GdiplusStartup(out initToken, ref input, out var output); AppDomain.CurrentDomain.ProcessExit += (sender, e) => { GdiplusShutdown(new HandleRef(null, initToken)); }; isInitialized = true; } for (int i = 0; i < 10; i++) { long beforeAlloc = Environment.WorkingSet; BitmapImage image = new BitmapImage(FilePath); long afterAlloc = Environment.WorkingSet; long afterDispose = Environment.WorkingSet; yield return(new DebugAllocationData(beforeAlloc, afterAlloc, afterDispose)); } }
public static StartupInput GetDefaultStartupInput() { StartupInput result = new StartupInput(); result.GdiplusVersion = 1; result.SuppressBackgroundThread = false; result.SuppressExternalCodecs = false; return result; }
public static StartupInput GetDefaultStartupInput() { StartupInput result = new StartupInput(); result.GdiplusVersion = 1; result.SuppressBackgroundThread = false; result.SuppressExternalCodecs = false; return(result); }
public bool SuppressExternalCodecs; // FALSE unless you want GDI+ only to use // its internal image codecs. public static StartupInput GetDefault() { StartupInput result = new StartupInput(); result.GdiplusVersion = 1; // result.DebugEventCallback = null; result.SuppressBackgroundThread = false; result.SuppressExternalCodecs = false; return(result); }
public static StartupInput GetDefault() { var result = new StartupInput { GdiplusVersion = 1, SuppressBackgroundThread = false, SuppressExternalCodecs = false }; return(result); }
static Gdip() { Debug.Assert(s_initToken == IntPtr.Zero, "GdiplusInitialization: Initialize should not be called more than once in the same domain!"); PlatformInitialize(); StartupInput input = StartupInput.GetDefault(); // GDI+ ref counts multiple calls to Startup in the same process, so calls from multiple // domains are ok, just make sure to pair each w/GdiplusShutdown int status = GdiplusStartup(out s_initToken, ref input, out StartupOutput output); CheckStatus(status); }
static ImageFast() { if (gdipToken == IntPtr.Zero) { StartupInput input = StartupInput.GetDefaultStartupInput(); StartupOutput output; int status = GdiplusStartup(out gdipToken, ref input, out output); if (status == 0) { AppDomain.CurrentDomain.ProcessExit += new EventHandler(Cleanup_Gdiplus); } } }
static Gdip() { Debug.Assert(s_initToken == IntPtr.Zero, "GdiplusInitialization: Initialize should not be called more than once in the same domain!"); Debug.WriteLineIf(s_gdiPlusInitialization.TraceVerbose, "Initialize GDI+ [" + AppDomain.CurrentDomain.FriendlyName + "]"); Debug.Indent(); PlatformInitialize(); StartupInput input = StartupInput.GetDefault(); // GDI+ ref counts multiple calls to Startup in the same process, so calls from multiple // domains are ok, just make sure to pair each w/GdiplusShutdown int status = GdiplusStartup(out s_initToken, ref input, out StartupOutput output); CheckStatus(status); Debug.Unindent(); }
private static void Initialize() { var input = StartupInput.GetDefault(); var status = GdiplusStartup(out InitToken, ref input, out _); if (status != Ok) { throw StatusException(status); } var currentDomain = AppDomain.CurrentDomain; currentDomain.ProcessExit += OnProcessExit; if (!currentDomain.IsDefaultAppDomain()) { currentDomain.DomainUnload += OnProcessExit; } }
static ImageFast() { #if DEBUG Console.WriteLine("Initializing GDI+"); #endif if (gdipToken == IntPtr.Zero) { StartupInput input = StartupInput.GetDefaultStartupInput(); StartupOutput output; int status = GdiplusStartup(out gdipToken, ref input, out output); #if DEBUG if (status == 0) { Console.WriteLine("Initializing GDI+ completed successfully"); } #endif if (status == 0) { AppDomain.CurrentDomain.ProcessExit += new EventHandler(Cleanup_Gdiplus); } } }
private static extern int GdiplusStartup(out IntPtr token, ref StartupInput input, out StartupOutput output);
public static extern Status GdiplusStartup(out IntPtr token, StartupInput input, out StartupOutput output);
public bool SuppressExternalCodecs; // FALSE unless you want GDI+ only to use // its internal image codecs. public static StartupInput GetDefault() { StartupInput result = new StartupInput(); result.GdiplusVersion = 1; // result.DebugEventCallback = null; result.SuppressBackgroundThread = false; result.SuppressExternalCodecs = false; return result; }