Si tiene un servicio de Windows y una aplicación de formularios de Windows que usa el mismo objeto estático, ¿es el mismo objeto en ambas aplicaciones? En otras palabras, si actualizo el objeto en el servicio, ¿también se actualizará en la aplicación de formularios si ambos se ejecutan al mismo tiempo?¿Es un objeto estático el mismo objeto en múltiples aplicaciones en ejecución?
Respuesta
Se ejecutan en procesos diferentes para que no compartan el objeto estático.
No está relacionado exactamente con su pregunta, pero los hilos creados en la misma aplicación son una historia diferente. Compartirán la variable estática a menos que esté marcado con ThreadStatic
atributo
Creo que cada aplicación se ejecuta en su propio proceso. Realmente dudo que la actualización de un objeto estático en el servicio de Windows tenga algún efecto sobre el objeto estático que se ejecuta como aplicación de formularios de Windows.
El servicio de Windows se ejecuta en la cuenta system
donde, como una aplicación de formularios de Windows, se ejecuta en la cuenta User
.
Como han señalado otros en los comentarios, los procesos se ejecutan en diferentes memorias. Cada proceso tiene su propio espacio de direcciones.
El servicio de Windows responde a los comandos del Administrador de control de servicios.
Son completamente dos cosas diferentes.
No. A menos que haga algo específico para lograr este objeto, no se comparten entre procesos diferentes.
La respuesta simple a esto es que cada proceso tiene su propia estática, por lo que no, no se compartirá entre el servicio y el proceso del escritorio.
La parte complicada es que incluso puede haber varias instancias de una estática en un solo proceso.
En Java
hay una instancia del objeto estático para cada ClassLoader
que carga la clase. Comprobé la funcionalidad equivalente en C#
. Encontré this question on SO que sugiere que de hecho hay algo similar a varios cargadores de clases en C#
(supongo que en realidad en CLR
) y aunque no encontré ninguna referencia específica a varias instancias de una estática, estoy seguro de que ese sería el caso.
En pocas palabras, no,
estática es 'static per AppDomain
' (y que podría tener varios dominios por proceso), por lo que ni siquiera por un proceso es seguro asumir que sus variables estáticas serán 'compartidos' (normalmente es cierto a menos usted crea nuevos dominios a mano, por ejemplo, vea What is AppDomain?) - por ej. las aplicaciones web normalmente rompen los singleton "estáticos", etc.
En otras palabras, necesita utilizar algún tipo de persistencia para poder compartir sus datos entre diferentes aplicaciones. O utilice la comunicación remota, WCF para comunicarse sobre los límites de la aplicación (dominio).
- 1. utilizar el mismo archivo estático en múltiples aplicaciones en Django
- 2. PHP isset ($ this) y utilizando el mismo método de objeto en un contexto estático y de objeto
- 3. objeto 'estático' en una función
- 4. ¿Es seguro reemplazar un objeto propio por otro objeto del mismo tipo en un método?
- 5. Creando múltiples hilos para el mismo método en una instancia en un objeto
- 6. ¿Es reutilizable el objeto Cipher?
- 7. ¿Múltiples delegados por un objeto?
- 8. Bloquear en un objeto
- 9. Tornado: admite múltiples aplicaciones en el mismo IOLoop
- 10. .NET XmlSerializer y múltiples referencias al mismo objeto
- 11. ¿Cómo se burlan de objeto en un método estático
- 12. Comprobando si el objeto es del mismo tipo
- 13. C# Método estático vs instancia de objeto
- 14. ¿Puede un objeto destruirse a sí mismo?
- 15. C# ¿Pueden las clases múltiples BLOQUEAR el mismo objeto utilizando múltiples referencias?
- 16. ¿Construye el objeto consigo mismo como referencia?
- 17. Mangosta: compruebe si el objeto es un objeto de mangosta
- 18. ruby variable como el mismo objeto (¿punteros?)
- 19. El mismo objeto en múltiples servicios web da como resultado clases duplicadas
- 20. combinando múltiples CCSprites en un objeto agrupado en cocos2d
- 21. ¿Es nulo un objeto?
- 22. Agregar miembros a un objeto dinámico en tiempo de ejecución
- 23. ¿Se puede hacer un objeto serializable en tiempo de ejecución?
- 24. cómo duplicar puntero para señalar en el mismo objeto
- 25. ¿Es posible asignar el mismo valor a varias claves en un objeto dict a la vez?
- 26. Tamaño de un objeto en tiempo de ejecución
- 27. Usando método estático vs. método de objeto
- 28. Ejecución y método del objeto de EL
- 29. Acceso JavaScript Object Valor literal en el mismo objeto
- 30. ¿Cómo se define un objeto C# en tiempo de ejecución?
Esto no tiene nada que ver con las cuentas de usuario. Los diferentes procesos tienen espacios de memoria separados y, por lo tanto, no comparten datos por defecto. –
@BrianRasmussen absolutamente - Sandeep probablemente debas editarlo un poco. – NSGaga