I see most of the types in .NET framework
are spread across 3 different namespaces (may be more), one start with Microsoft
, other with System
and the third with Windows
.
For example there is Windows.System.Threading.ThreadPool
and System.Threading.ThreadPool
.
Is there a clear cut semantic difference on this design?
Microsoft.*
namespaces are typically .NET namespaces for features which are specific to Windows, e.g. registry access
System.*
namespaces are "normal" .NET system namespaces
Windows.*
namespaces are typically part of Windows Runtime aka WinRT (for Windows 8 store apps, Windows Phone 8)
See more on this question at Stackoverflow