Working with Threads in .NET

Working with threads in .NET is practically identical to using them in the Windows API.

Using the .NET Thread class, threads can be created and controlled. After a Thread object is created, use the Start() method.

using System;
using System.Threading;

class ThreadExample
{
	static void Main()
	{
		var thread1 = new Thread(ThreadFunc);
		thread1.Start();
		Console.WriteLine("Main thread");
	}
	static void ThreadFunc()
	{
		Console.WriteLine("In a thread");
	}
}

Passing Data to Threads

A parameter(s) can be passed to the new thread's method but it must be passed as an object and then type cast to the right datatype.

using System;
using System.Threading;

class ThreadExample
{
	public struct Data
	{
		public string first;
		public string last;
	}
	static void Main()
	{
		Data d;
		d.first = "abc";
		d.last = "xyz";

		var thread1 = new Thread(ThreadFunc);
		thread1.Start(d);
		Console.WriteLine("Main thread");
	}
	static void ThreadFunc(object o)
	{
		Data d2 = (Data)o;
		Console.WriteLine("In a thread with parameter: " + d2.first);
	}
}

Background Threads

The application's process continues to run for as long as at least one foreground thread is running. If this is a problem then solve it by using background threads.

Specify the property IsBackground = true to create background threads.

using System;
using System.Threading;

class ThreadExample
{
	static void Main()
	{
		var thread1 = new Thread(ThreadFunc) { IsBackground = true };
		thread1.Start();
		Console.WriteLine("Main thread");
	}
	static void ThreadFunc()
	{
		Console.WriteLine("In a thread");
	}
}