You got this behaving with .NET garbage collections finally? SWEET!!  Now make it so I don't need a separate IOCP/blocking thread for job object events, or a separate IOCP/blocking thread for registered I/O. Come on, you dropped the ball with that after solving everything else. No I'm not gonna go use event handles, that's for n00bz.