Threading
Multi-threading
As Dot Net Anywhere has been written for an embedded UNIX platform that does not support native threading of any sort, .NET threads are all executed within a single native process. The interpreter has its own internal thread scheduler which schedules which managed thread to execute. When unmanaged code is called (via P/Invoke or internal calls) this threading model breaks down unless all unmanaged code behaves 'nicely' and doesn't hog the CPU without returning to managed code.
All the unmanaged code in the download obeys this requirement, although some of the System.Drawing code does take a relatively long time to execute (e.g. Graphics.DrawString() methods).