public static void Yield()
{
if (ThisGreenThreadList.IsValueCreated)
{
var GreenThread = ThisGreenThreadList.Value;
if (GreenThread.Running)
{
try
{
GreenThread.Running = false;
GreenThread.ThisEvent.Reset();
GreenThread.ParentEvent.Set();
GreenThread.ThisSemaphoreWaitOrParentThreadStopped();
}
finally
{
GreenThread.Running = true;
}
}
else
{
throw (new InvalidOperationException("GreenThread has finalized"));
}
}
}