Du erstellst eine lokale CS, aber ich gehe davon aus, dass du etwas global (g_RunningThreads) vor mehreren Zugriffen schützen möchtest. Also entweder CS global deklarieren (so dass alle die gleiche CS-Instanz benutzen) oder einfach TInterlocked.Decrement(g_RunningThreads); benutzen