public CFRunLoopExitReason RunInMode(string mode, double interval, bool returnAfterSourceHandled)
{
CFString s = mode == null ? null : new CFString(mode);
var v = CFRunLoopRunInMode(s == null ? IntPtr.Zero : s.Handle, interval, returnAfterSourceHandled ? 1 : 0);
if (s != null)
{
s.Dispose();
}
return((CFRunLoopExitReason)v);
}