This document discusses C# threads and threading concepts in 3 paragraphs:
C# threads are managed by the System.Threading.Thread class and are passed a function using a ThreadStart delegate. Threads can be started and have properties like IsBackground that indicate their state.
When threads share resources, synchronization is needed to serialize access. The C# lock statement can be used to synchronize access to shared resources like queues. Other synchronization primitives like Monitor, Interlocked, and ReaderWriterLock are also available.
User interface threads in Windows Forms are separate from worker threads that do background processing. Worker threads must communicate with UI threads using Form methods like Invoke, BeginInvoke, and EndInvoke