Thread myThread = new Thread(nameOfTheFunctionToExecuteHere); myThread.Start(); This is enough to create a new thread and start it. You can, of course, set the name of the thread, the priority etc. The nameOfTheFunctionToExecuteHere must be in the pattern: void nameOfTheFunctionToExecuteHere() { } or static void nameOfTheFunctionToExecuteHere() { } You can also use void nameOfTheFunctionToExecuteHere(object parameter) but, in that case, you must call myThread.Start(parameter). This will create an entire new thread. For small work that does not wait for any external events it is recommented that you use the ThreadPool. To do that, call ThreadPool.QueueUserWorkItem(methodNameHere); This will use reutilize the threads from the ThreadPool (it is faster than creating a full thread), but the ThreadPool is limited, so you must not "block undefinitelly" in these threads. There are other differences, but I think you will find it by yourself.