Jeśli masz usługę Windows i aplikację formularzy systemu Windows, która używa tego samego obiektu statycznego, czy jest to ten sam obiekt w obu aplikacjach? Innymi słowy, jeśli zaktualizuję obiekt w usłudze, czy będzie on również aktualizowany w aplikacji formularzy, jeśli obie są uruchomione w tym samym czasie?Czy obiekt statyczny to ten sam obiekt w wielu uruchomionych aplikacjach?
Odpowiedz
Działają one w różnych procesach, więc nie udostępniają statycznego obiektu.
Nie dotyczy to pytania, ale wątki utworzone w tej samej aplikacji to inna historia. Będą one udostępniać zmienną statyczną, chyba że jest oznaczona ThreadStatic
atrybut
Uważam, że każda aplikacja działa we własnym procesie. Naprawdę wątpię, aby aktualizacja statycznego obiektu w usłudze Windows miała jakikolwiek wpływ na działanie statycznego obiektu jako aplikacji formularzy systemu Windows.
Usługa Windows działa pod kontem system
, gdzie jako aplikacja formularzy systemu Windows działa pod kontem User
.
Jak zauważyli inni w komentarzach, procesy przebiegają w różnych pamięciach. Każdy proces ma własną przestrzeń adresową.
Usługa systemu Windows odpowiada komendom Menedżera sterowania usługami.
Są to zupełnie dwie różne rzeczy.
Nie. Jeśli nie zrobisz czegoś specyficznego dla osiągnięcia tych obiektów, nie są one dzielone między różne procesy.
Najprostszą odpowiedzią na to jest to, że każdy proces ma swój własny statyczny, więc nie, nie będzie dzielony między procesami usługowymi i komputerowymi.
Skomplikowaną częścią jest to, że mogą istnieć nawet wielokrotne wystąpienia statyczne w procesie pojedynczego.
W przypadku jednej instancji obiektu statycznego dla każdego ClassLoader
ładowana jest klasa. Sprawdziłem równoważną funkcjonalność w C#
. Znalazłem this question on SO, który sugeruje, że rzeczywiście istnieje coś podobnego do wielu klas ładujących w C#
(tak naprawdę w CLR
) i chociaż nie znalazłem żadnego konkretnego odniesienia do wielu wystąpień statycznego, jestem pewien, że tak by było.
Po prostu nie,
statyczny jest „static per AppDomain
” (i można mieć wiele domen na proces), więc nawet dla jednego procesu można bezpiecznie przyjąć, że zmienne statyczne będą „wspólne” (normalnie jest prawda, chyba ręcznie tworzysz nowe domeny, np. patrz What is AppDomain?) - np Aplikacje internetowe zazwyczaj przerywają "statyczne" single itp.
Innymi słowy, musisz użyć pewnego rodzaju trwałości, aby móc udostępniać swoje dane pomiędzy różnymi aplikacjami. Lub użyj usługi zdalnej, WCF do komunikowania się przez granice aplikacji (domeny).
- 1. FactoryGirl: tworzyć ten sam obiekt wielokrotnie
- 2. Hibernate próbuje przetrwać ten sam obiekt dwukrotnie
- 3. Zmienna ruby jako ten sam obiekt (wskaźniki?)
- 4. Czy można bezpiecznie blokować i monitorować ten sam obiekt?
- 5. Java, zmienne referencyjne wskazujące na ten sam obiekt w pamięci
- 6. Co to jest ten wzorzec inicjalizujący obiekt?
- 7. Czy istnieje sposób, aby pyton Python ignorować "to nie ten sam obiekt" błędy
- 8. dodając ten sam obiekt dwa razy do ManyToManyField
- 9. Porównanie zmiennych wskazujących na ten sam obiekt Integer
- 10. Co robi Obiekt (ten)?
- 11. powinienem zadeklarować obiekt wzór jako statyczny
- 12. Jak zachować ten sam identyfikator sesji w wielu aplikacjach internetowych w ASP.NET
- 13. Czy obiekt może się sam usunąć? W jaki sposób?
- 14. Czy jest możliwe, aby 2 zmienne wskazywały na ten sam obiekt? (javascript)
- 15. Zarejestruj ten sam typ dla wielu interfejsów.
- 16. Po przeciążeniu operatora ==, jak porównać, czy dwie zmienne wskazują na ten sam obiekt?
- 17. Sprawdź, czy jest to obiekt okno
- 18. "Ten" obiekt jest pusty w pre ("zapisz")
- 19. Czy obiekt może sam się wymazać ze standardowego kontenera C++?
- 20. Co to jest obiekt w C?
- 21. Lista w klasie Pythona ma ten sam obiekt nad 2 różnymi instancjami?
- 22. Ruby: w jaki sposób mogę skopiować zmienną bez wskazywania na ten sam obiekt?
- 23. Obiekt już istnieje w RSACryptoServiceProvider
- 24. Jak edytować ten sam plik na wielu kartach w vimie?
- 25. redefiniować obiekt spring.net w wielu plikach konfiguracyjnych
- 26. Dlaczego obiekt ten nie zostanie utworzony? C++
- 27. Obiekt Byte Array to Image
- 28. Underscore.js obiekt-obiekt mapper?
- 29. Czy obiekt Funkcja konieczne
- 30. Czy obiekt Arguments wycieknie?
Nie ma to nic wspólnego z kontami użytkowników. Różne procesy mają osobne obszary pamięci i dlatego nie współdzielą danych domyślnie. –
@BrianRasmussen absolutnie - Sandeep prawdopodobnie powinieneś trochę edytować. – NSGaga