public MacMemoryMonitor() { DispatchSource = new DispatchSource.MemoryPressure(notificationFlags, DispatchQueue.MainQueue); DispatchSource.SetEventHandler(() => { StatusChanged(DispatchSource.PressureFlags); //var metadata = CreateMemoryMetadata (DispatchSource.PressureFlags); //var args = new PlatformMemoryStatusEventArgs (metadata); //OnStatusChanged (args); }); DispatchSource.Resume(); }
private void StartMemoryMonitor() { var dispatchSourcePressure = new DispatchSource.MemoryPressure(MemoryPressureFlags.Critical | MemoryPressureFlags.Warn | MemoryPressureFlags.Normal, DispatchQueue.MainQueue); dispatchSourcePressure.SetRegistrationHandler(() => PrintResult("Memory monitor registered")); dispatchSourcePressure.SetEventHandler(() => { var pressureLevel = dispatchSourcePressure.PressureFlags; PrintResult($"Memory worning of level: {pressureLevel}"); CancelDispatchSource(); }); dispatchSourcePressure.SetCancelHandler(() => PrintResult("Memory monitor cancelled")); dispatchSource = dispatchSourcePressure; dispatchSource.Resume(); }