The .NET Framework includes a number of classes that simplify multithreaded programming. The Thread class is used to represent threads that execute code in an application that targets the .NET Framework. The framework also includes classes that are used for thread synchronization. Applications that target the .NET Framework can also take advantage of the common language runtime thread pool, which is accessed through the ThreadPool class.
The C# language offers the ability to directly access memory through pointers in code regions explicitly marked as unsafe. Designating an unsafe code region has some disadvantages, such as requiring a higher level of security trust and rendering the code unverifiable. However, the ability to access memory directly can be advantageous when dealing with legacy code or when performance is a concern.