public IAsyncResult BeginInvoke(Delegate method, object[] args) { ElapsedEventHandler handler = (ElapsedEventHandler)method; InvokeDelegate D = Invoke; return(D.BeginInvoke(handler, args, CallbackMethod, null)); }
public static void Main(string [] args) { AssignmentNO8 obj = new AssignmentNO8(); InvokeDelegate pd1 = obj.producerMthd; InvokeDelegate pd2 = obj.producerMthd; InvokeDelegate pd3 = obj.producerMthd; InvokeDelegate pd4 = obj.producerMthd; InvokeDelegate pd5 = obj.producerMthd; InvokeDelegate cd1 = obj.consumerMthd; InvokeDelegate cd2 = obj.consumerMthd; InvokeDelegate cd3 = obj.consumerMthd; InvokeDelegate cd4 = obj.consumerMthd; InvokeDelegate cd5 = obj.consumerMthd; while (true) { pd1.BeginInvoke(null, null); pd2.BeginInvoke(null, null); pd3.BeginInvoke(null, null); pd4.BeginInvoke(null, null); pd5.BeginInvoke(null, null); if (AssignmentNO8.goods > 0) { cd5.BeginInvoke(null, null); cd4.BeginInvoke(null, null); cd3.BeginInvoke(null, null); cd2.BeginInvoke(null, null); cd1.BeginInvoke(null, null); } } }
/// <summary> /// Invoke a delegate as an Async Task /// </summary> /// <param name="delegate">Delegate</param> /// <param name="args">Delegate arguments</param> /// <returns>Task with cancellation token support</returns> public static Task <object> DynamicInvokeAsync(this Delegate @delegate, params object[] args) { var nDelegate = new InvokeDelegate((mDel, mArgs) => mDel.DynamicInvoke(mArgs)); return(Task.Factory.FromAsync(nDelegate.BeginInvoke(@delegate, args, null, null), nDelegate.EndInvoke)); }
/// <summary> /// Invoke a delegate as an Async Task /// </summary> /// <param name="delegate">Delegate</param> /// <param name="cancellationToken">Cancellation token</param> /// <param name="args">Delegate arguments</param> /// <returns>Task with cancellation token support</returns> public static Task <object> DynamicInvokeAsync(this Delegate @delegate, CancellationToken cancellationToken, params object[] args) { var nDelegate = new InvokeDelegate((del, mArgs) => del.DynamicInvoke(mArgs)); return(Task.Factory.FromAsync(nDelegate.BeginInvoke(@delegate, args, null, null), nDelegate.EndInvoke).HandleCancellationAsync(cancellationToken)); }