Q:

Where should my Try Catch block be when running a thread?

Take this thread:
Thread thread = new Thread(delegate()
            {
                //Code
            });

            thread.Start();

Should it be around the thread.Start(); or inside:
Thread thread = new Thread(delegate()
            {
                try
                {
                    //Code
                }
                catch (Exception)
                {
                    //Code
                }
            });

A:

it is completely different to put then inside or outside.
If you put them around the thread.Start() call, you can detect (according to this page: http://msdn.microsoft.com/en-us/library/system.threading.thread.start(v=vs.71).aspx)

ThreadStateException The thread has already been started.
SecurityException    The caller does not have the appropriate SecurityPermission.
OutOfMemoryException There is not enough memory available to start this thread.
NullReferenceException   This method was invoked on a thread reference that is a null reference (Nothing in Visual Basic).

If you put it inside, you will detect exception inside the code you will run in your thread. So any kind of exception you want.

A:

The exceptions pertaining the logic you have in the delegate should be handled inside the delegate. 
thread.Start() itself can only throw ThreadStateException or OutOfMemoryException.

A:

Preventing silent thred termination
It explains to place the try catch inside of the delegate.  It also talks about doing your finnally clean up if needed.

