Насколько широко видны различные объекты (общий класс, модуль и т. Д.) В VB.NET - PullRequest
2 голосов
/ 06 июня 2009

У меня есть приложение VB.NET, где различные объекты будут получать доступ к некоторому общему коду, и у меня есть некоторые счетчики и значения, общие для всех вызовов, поэтому в настоящее время я использую «Общий класс» (я знаю, классы сами по себе не могут быть общими, но все переменные и методы помечены как «Общие»).

Меня беспокоит видимость этого объекта - если пользователь запускает два экземпляра приложения на одном рабочем столе, будут ли они использовать один и тот же "экземпляр" общего класса? Другими словами, будут ли две копии приложения увеличивать одни и те же счетчики и использовать одни и те же переменные?

Кроме того, как насчет двух пользовательских пространств на одном и том же компьютере - если каждый пользователь запускает копию, эти две копии будут мешать?

Возможно, я убираю концепцию "Shared", и есть намного лучший способ сделать это (я знаю, что некоторые люди делят общий код через модули вместо классов). Есть ли лучший способ, чтобы объекты (как переменные, так и методы) совместно использовались во всем приложении, но содержались отдельно от других экземпляров приложения?

UPDATE: В ответ на вопрос о моем «предпочтительном» способе приложение, которое я пишу, должно сохранять конфиденциальность данных даже между различными экземплярами, которые запускает пользователь. В этом случае я вообще не хочу делить какие-либо данные между несколькими экземплярами, поэтому я обеспокоен побочными эффектами использования класса Shared или Module. Спасибо за вопрос.

Ответы [ 2 ]

3 голосов
/ 06 июня 2009

Общие значения (или Static, если вы C # er) являются общими только для домена приложения.

Можно даже загрузить несколько доменов приложений в один процесс, и каждый из них будет иметь свой собственный набор общих значений.

3 голосов
/ 06 июня 2009

Каждый экземпляр вашего приложения, запущенный одним или несколькими пользователями, будет видеть свою собственную копию общих полей.

Эта запись в блоге более подробно описывает случаи, когда статические / общие поля ограничиваются элементами типа потоков, а не контекстом по умолчанию - доменом приложения.

...