public override void Post(SendOrPostCallback d, object?state) { if (d == null) { throw new ArgumentNullException(nameof(d)); } var data = new InvokeState(d, state); var handle = GCHandle.Alloc(data, GCHandleType.Normal); Dispatch.AsyncFunction(Dispatch.MainQueue, GCHandle.ToIntPtr(handle), InvokeCallback); }
public override void Post(SendOrPostCallback d, object state) { if (d == null) { throw new ArgumentNullException(nameof(d)); } var data = new InvokeState(d, state, false); var handle = GCHandle.Alloc(data, GCHandleType.Normal); GLib.ContextInvoke(IntPtr.Zero, InvokeCallback, GCHandle.ToIntPtr(handle)); }
public override void Send(SendOrPostCallback d, object state) { if (d == null) { throw new ArgumentNullException(nameof(d)); } if (IsMainThread) { d(state); } else { var data = new InvokeState(d, state, true); var handle = GCHandle.Alloc(data, GCHandleType.Normal); lock (data) { GLib.ContextInvoke(IntPtr.Zero, InvokeCallback, GCHandle.ToIntPtr(handle)); Monitor.Wait(data); } } }
protected override object OnInvoke(object target, PomonaContext context, InvokeState state) { state.Form = context.Bind(this.formParameter.TypeSpec); return(base.OnInvoke(target, context, state)); }
protected override object OnGetArgument(HandlerParameter parameter, PomonaContext context, InvokeState state) { if (parameter == this.targetResourceParameter) { return(context.Node.Value); } if (parameter == this.formParameter) { return(state.Form); } return(base.OnGetArgument(parameter, context, state)); }