tesis sistemas sistema recomendacion hacer como c# performance optimization

c# - sistemas - sistema de recomendacion tesis



C#.NET: ¿Cómo verificar si estamos funcionando con batería? (5)

Quiero ser un buen desarrollador ciudadano, pagar mis impuestos y deshabilitar cosas si estamos ejecutando Remote Desktop o corriendo con batería.

Si estamos ejecutando el escritorio remoto (o de manera equivalente en una sesión del servidor de Terminal Server), debemos deshabilitar las animaciones y el doble almacenamiento en el búfer. Puedes verificar esto con:

/// <summary> /// Indicates if we''re running in a remote desktop session. /// If we are, then you MUST disable animations and double buffering i.e. Pay your taxes! /// /// </summary> /// <returns></returns> public static Boolean IsRemoteSession { //This is just a friendly wrapper around the built-in way get { return System.Windows.Forms.SystemInformation.TerminalServerSession; } }

Ahora necesito averiguar si el usuario está funcionando con energía de la batería. Si lo son, no quiero pasar la batería. Quiero hacer cosas como

  • desactivar animaciones
  • deshabilitar la verificación ortográfica de fondo
  • desactivar la impresión de fondo
  • desactivar gradientes
  • use graphics.SmoothingMode = SmoothingMode.HighSpeed;
  • use graphics.InterpolationMode = InterpolationMode.Low;
  • use graphics.CompositingQuality = CompositingQuality.HighSpeed;
  • minimizar el acceso al disco duro - para evitar girar
  • minimizar el acceso a la red - para ahorrar energía WiFi

¿Hay alguna manera de controlar si la máquina funciona con batería?

Referencias

¿Cómo convencer a los desarrolladores para que paguen sus "impuestos"?

Impuestos: Conexión a Escritorio remoto y pintura

GetSystemMetrics (SM_REMOTESESSION)


No creo que esté expuesto en el código administrado, pero puede usar Win32 GetSystemPowerStatus a través de pinvoke para obtener esta información.

Como comentario adicional, es posible que desee considerar el uso de GetCurrentPowerPolicies o similar para determinar las preferencias de los usuarios relacionadas con el rendimiento / administración de energía.



Puede usar la función GetSystemPowerStatus usando P / Invoke. Ver: http://msdn.microsoft.com/en-gb/library/aa372693.aspx

Aquí hay un ejemplo:

using System; using System.Runtime.InteropServices; namespace PowerStateExample { [StructLayout(LayoutKind.Sequential)] public class PowerState { public ACLineStatus ACLineStatus; public BatteryFlag BatteryFlag; public Byte BatteryLifePercent; public Byte Reserved1; public Int32 BatteryLifeTime; public Int32 BatteryFullLifeTime; // direct instantation not intended, use GetPowerState. private PowerState() {} public static PowerState GetPowerState() { PowerState state = new PowerState(); if (GetSystemPowerStatusRef(state)) return state; throw new ApplicationException("Unable to get power state"); } [DllImport("Kernel32", EntryPoint = "GetSystemPowerStatus")] private static extern bool GetSystemPowerStatusRef(PowerState sps); } // Note: Underlying type of byte to match Win32 header public enum ACLineStatus : byte { Offline = 0, Online = 1, Unknown = 255 } public enum BatteryFlag : byte { High = 1, Low = 2, Critical = 4, Charging = 8, NoSystemBattery = 128, Unknown = 255 } // Program class with main entry point to display an example. class Program { static void Main(string[] args) { PowerState state = PowerState.GetPowerState(); Console.WriteLine("AC Line: {0}", state.ACLineStatus); Console.WriteLine("Battery: {0}", state.BatteryFlag); Console.WriteLine("Battery life %: {0}", state.BatteryLifePercent); } } }


Creo que puede verificar SystemInformation.PowerStatus para ver si tiene batería o no.

Boolean isRunningOnBattery = (System.Windows.Forms.SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Offline);

Editar: Además de lo anterior, también hay un System.Windows.Forms. Clase PowerStatus . Uno de sus métodos es PowerLineStatus , que será igual a PowerLineStatus.Online si está en corriente alterna.


R. Bemrose encontró la llamada administrada. Aquí hay un código de muestra:

/// <summary> /// Indicates if we''re running on battery power. /// If we are, then disable CPU wasting things like animations, background operations, network, I/O, etc /// </summary> public static Boolean IsRunningOnBattery { get { PowerLineStatus pls = System.Windows.Forms.SystemInformation.PowerStatus.PowerLineStatus; //Offline means running on battery return (pls == PowerLineStatus.Offline); } }