Exemplo n.º 1
0
    public IAsyncResult BeginInvoke(Delegate method, object[] args)
    {
        ElapsedEventHandler handler = (ElapsedEventHandler)method;
        InvokeDelegate      D       = Invoke;

        return(D.BeginInvoke(handler, args, CallbackMethod, null));
    }
Exemplo n.º 2
0
    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);
            }
        }
    }
Exemplo n.º 3
0
        /// <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));
        }
Exemplo n.º 4
0
        /// <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));
        }