Example #1
0
 public void Dispose()
 {
     if (DispatchSource != null)
     {
         DispatchSource.Cancel();
         DispatchSource.Dispose();
         DispatchSource = null;
     }
 }
Example #2
0
        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();
        }