2012-04-04 14 views

Odpowiedz

8

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

0

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.

+2

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. –

+0

@BrianRasmussen absolutnie - Sandeep prawdopodobnie powinieneś trochę edytować. – NSGaga

2

Nie. Jeśli nie zrobisz czegoś specyficznego dla osiągnięcia tych obiektów, nie są one dzielone między różne procesy.

0

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.

0

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).

Powiązane problemy