Actualmente estoy creando una aplicación en C # usando Visual Studio. Quiero crear un código para que cuando una variable tenga un valor de 1, se lleve a cabo una determinada pieza de código. Sé que puedo usar una declaración if, pero el problema es que el valor se cambiará en un proceso asincrónico, por lo que técnicamente la declaración if podría ignorarse antes de que el valor haya cambiado.
¿Es posible crear un controlador de eventos para que cuando el valor de la variable cambie, se active un evento? Si es así, ¿cómo puedo hacer esto?
¡Es completamente posible que haya entendido mal cómo funciona una declaración if! Cualquier ayuda será muy apreciada.
c#
visual-studio
silverlight
windows-phone-7
event-handling
James Mundy
fuente
fuente
Respuestas:
Me parece que quieres crear una propiedad.
Esto le permite ejecutar código cada vez que cambia el valor de la propiedad. Podrías organizar un evento aquí, si quisieras.
fuente
Puede usar un establecedor de propiedades para generar un evento siempre que cambie el valor de un campo.
Puede tener su propio delegado EventHandler o puede utilizar el famoso delegado System.EventHandler.
Por lo general, hay un patrón para esto:
Aquí hay un ejemplo
La ventaja de este enfoque es que permite que cualquier otra clase que desee heredar de su clase cambie el comportamiento si es necesario.
Si desea capturar un evento en un subproceso diferente que se está generando, debe tener cuidado de no cambiar el estado de los objetos que están definidos en otro subproceso, lo que provocará que se lance una excepción de subproceso cruzado. Para evitar esto, puede usar un método Invoke en el objeto cuyo estado desea cambiar para asegurarse de que el cambio está ocurriendo en el mismo hilo en el que se generó el evento o en caso de que esté tratando con un formulario de Windows. puede usar un BackgourndWorker para hacer cosas en un hilo paralelo agradable y fácil.
fuente
El marco .NET en realidad proporciona una interfaz que puede usar para notificar a los suscriptores cuando una propiedad ha cambiado: System.ComponentModel.INotifyPropertyChanged. Esta interfaz tiene un evento PropertyChanged. Se usa generalmente en WPF para la vinculación, pero lo he encontrado útil en capas comerciales como una forma de estandarizar la notificación de cambios de propiedad.
En términos de seguridad del hilo, pondría un candado en el colocador para que no se encuentre con ninguna condición de carrera.
Aquí están mis pensamientos en código :):
Espero que esto sea útil :)
fuente
solo usa una propiedad
fuente
puedes usar una clase genérica:
y podrá hacer lo siguiente:
resultado:
fuente