Consider the following code.

**In Main**

```
for (int i = 0; i <= 9; i++)
{
    ThreadPool.QueueUserWorkItem(Hi,i);
}

static void Hi(object arg)
{
    int n = (int)arg;
    Console.WriteLine("Thread ID:{0}  IsBackground:{1} HI Joshua.. You got:{2} ", Thread.CurrentThread.ManagedThreadId,
        Thread.CurrentThread.IsBackground,n);

}

```

I am getting the following output

```
Thread ID:10  IsBackground:True HI Joshua.. You got:2
Thread ID:10  IsBackground:True HI Joshua.. You got:3
Thread ID:10  IsBackground:True HI Joshua.. You got:4
Thread ID:10  IsBackground:True HI Joshua.. You got:6
Thread ID:10  IsBackground:True HI Joshua.. You got:7
Thread ID:10  IsBackground:True HI Joshua.. You got:8
Thread ID:10  IsBackground:True HI Joshua.. You got:9
Thread ID:11  IsBackground:True HI Joshua.. You got:5
Thread ID:13  IsBackground:True HI Joshua.. You got:1
Thread ID:12  IsBackground:True HI Joshua.. You got:0

```

My Question is that since threadpools threads have background property true so why they are getting shown up in my output?
It would also be nice if somebody could direct me a referece or book where I could get examples of threadpool working.