Question: I have recently started studying about threads. I thought of starting from the beginning and started reading MSDN documentation. Read about ApplicationDomain which is separate for each application. But in this link [ApplicationDomain and Threads](http://msdn.microsoft.com/en-us/library/a60kkx8k%28v=vs.71%29.aspx) it is mentioned that

Several threads can be executing in a single application domain at any given time and a particular thread is not confined to a single application domain. **That is, threads are free to cross application domain boundaries**

If a user created a thread and if it is allowed to cross application domain, then can it refer to the objects or memory reference of another applicationdomain ??? Please guide me if I am wrong.

Answer: 
The answer is yes. Every thread has a stack which can point to arbitrary object. The local variable on the threads stack are GC roots, meaning they will keep everything alive as long as the thread is alive.
A thread runs code, it can not refer to an application specific types or objects.

Most of the properties of a thread are read only, and the ones you will are very specific (like [CurrentCultre](http://msdn.microsoft.com/en-us/library/system.threading.thread.currentculture.aspx)) cannot be used to pass custom types.

The only way to associate data with a specific thread is by using [Thread](http://msdn.microsoft.com/en-us/library/system.threadstaticattribute.aspx) [Local Storage](http://msdn.microsoft.com/en-us/library/ms686749.aspx)
which of course will not pass from Application Domain to another and is only useful in very specific cases.