Ejemplo n.º 1
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();
        }