2012-03-31 3 views
0

Я недавно начал изучать темы. Я думал начать с самого начала и начал читать документацию MSDN. Читайте о ApplicationDomain, который является отдельным для каждого приложения. Но в этой ссылке ApplicationDomain and Threads упоминается, чтоApplicationDomain и Threads

Несколько потоков могут выполняться в одном домене приложения в любой момент времени, и определенный поток не ограничивается одним доменом приложения. То есть, потоки могут свободно пересекать границы доменов приложения

Если пользователь создал поток и разрешен перекрестный домен приложения, может ли он ссылаться на объекты или ссылку на память другого приложения? Пожалуйста, направляйте меня, если я ошибаюсь.

+0

Вы не ошиблись. Попробуйте задать реальный вопрос. –

ответ

0

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

Смотрите ниже информацию из MSDN (http://msdn.microsoft.com/en-us/library/2bh4z9hs%28v=vs.90%29.aspx):

код работает в одном приложении не может напрямую обращаться к коду или ресурсам из другого приложения. Общее время выполнения этой команды обеспечивает эту изоляцию, предотвращая прямые вызовы между объектами в разных доменах приложений. Объекты, которые проходят между доменами, либо копируются, либо получают доступ через прокси. Если объект скопирован, вызов объекта является локальным. То есть, как вызывающий объект, так и связанный с ним объект находятся в одном домене приложения. Если доступ к объекту осуществляется через прокси-сервер, вызов объекта удален. В этом случае вызывающий и связанный с ним объекты находятся в разных доменах приложений. Междоменные вызовы используют ту же инфраструктуру удаленных вызовов, что и вызовы между двумя процессами или между двумя машинами.

Также статья может быть полезна: http://www.codeproject.com/Articles/26148/Beginners-Guide-to-Threading-in-NET-Part-1-of-n

0

Поток запускает код, он не может ссылаться на конкретные типы или объекты приложения.

Большинство свойств потока доступны только для чтения, а те, которые вы будете очень конкретными (например, CurrentCultre), не могут использоваться для передачи пользовательских типов.

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

0

Ответ да. Каждый поток имеет стек, который может указывать на произвольный объект. Локальная переменная в стеке потоков - это корни GC, что означает, что они будут поддерживать все, пока поток жив.