CFRunLoopRunInMode está saliendo con el código 1, como si no se hubiera agregado nada

He creado un CGEventTap como este:

GetCurrentProcess(psn);

var mask =  1 << kCGEventLeftMouseDown | // CGEventMaskBit(kCGEventLeftMouseDown)
            1 << kCGEventLeftMouseUp | 
            1 << kCGEventRightMouseDown |
            1 << kCGEventRightMouseUp |
            1 << kCGEventOtherMouseDown |
            1 << kCGEventOtherMouseUp |
            1 << kCGEventScrollWheel;

mouseEventTap = CGEventTapCreateForPSN(&psn, kCGHeadInsertEventTap, kCGEventTapOptionDefault, mask, null);

if (!mouseEventTap.isNull()) {
      aRLS = CFMachPortCreateRunLoopSource(kCFAllocatorDefault, mouseEventTap, 0);
      CFRelease(mouseEventTap);

      if (!aRLS.isNull()) {
            aLoop = CFRunLoopGetCurrent();

            CFRunLoopAddSource(aLoop, aRLS, kCFRunLoopCommonModes);

            CFRelease(aRLS);
            CFRelease(aLoop);

            rez = CFRunLoopRunInMode(ostypes.CONST.kCFRunLoopCommonModes, 10, false); // figure out how to make this run indefinitely
            // rez is 1 :(

      }

}

MiCFRunLoopRun sale inmediatamente, en lugar de ejecutarse durante 10 segundos. Y dice que el código es 1, lo que significa que no hay fuentes en ese modo. Pero claramente hice unCFRunLoopAddSource a la opción de modos comuneskCFRunLoopRunFinished. The run loop mode mode has no sources or timers.. Alguien sabe lo que pasa? Esto está en hilo no principal.

Respuestas a la pregunta(1)

Su respuesta a la pregunta