using System; using System.Security.Principal; using System.Threading; class Starter { static public void Main() { GenericIdentity identity=new GenericIdentity("John"); GenericPrincipal principal=new GenericPrincipal(identity, new string[] {"Accountant"}); Thread.CurrentPrincipal=principal; principal=(GenericPrincipal) Thread.CurrentPrincipal; Console.WriteLine("Main: Identity is {0} and he is {1}an accountant.", principal.Identity.Name, principal.IsInRole("Accountant")?"":"not "); Thread t2=new Thread(new ThreadStart(Starter.Thread2)); t2.Start(); t2.Join(); } static public void Thread2() { GenericPrincipal principal=(GenericPrincipal) Thread.CurrentPrincipal; Console.WriteLine("Thread2: Identity is {0} and he is {1}an accountant.", principal.Identity.Name, principal.IsInRole("Accountant")?"":"not "); } }