Beispiel #1
0
 public static AsyncCallback CreateInvokeCallback(this IInvoker invoker, AsyncCallback callback)
 {
     return(delegate(IAsyncResult result)
     {
         IAsyncResult rtmp = invoker.BeginInvoke(callback, null, result);
         invoker.EndInvoke(rtmp);
     });
 }
Beispiel #2
0
        //public static IAsyncResult BeginInvokeCallback(IInvoker proc_invoker, Delegate proc, IInvoker callback_invoker, AsyncCallback callback, params object[] proc_args)
        //{
        //    List<object> newargs = new List<object>();
        //    proc_invoker.BeginInvoke(
        //    //IAsyncResult res=proc.DynamicInvoke(
        //}

        //public static IAsyncVoid InvokeVoid(SimpleCallback proc)
        //{
        //    AsyncAction res = new AsyncAction(proc);
        //    ThreadPool.Invoke(res.DoRun);
        //    return res.Async;
        //}
        //public static IAsyncValue<T> InvokeValue<T>(ReturnValueCallback<T> proc)
        //{
        //    AsyncResultAction<T> res = new AsyncResultAction<T>(proc);
        //    ThreadPool.Invoke(res.DoRun);
        //    return res.Async;
        //}

        //public static void InvokeVoid(SimpleCallback proc, IInvoker invoker, SimpleCallback onfinish)
        //{
        //    InvokeVoid(proc).OnFinish(onfinish, invoker);
        //}

        public static AsyncCallback CreateGenericInvokeCallback(this IInvoker invoker, Delegate callback, params object[] args)
        {
            return(delegate(IAsyncResult result)
            {
                List <object> newargs = new List <object>();
                newargs.Add(result);
                newargs.AddRange(args);
                IAsyncResult rtmp = invoker.BeginInvoke(callback, null, newargs.ToArray());
                invoker.EndInvoke(rtmp);
            });
        }
Beispiel #3
0
        public static void Invoke4 <T1, T2, T3, T4>(this IInvoker conn, Action <T1, T2, T3, T4> func, T1 p1, T2 p2, T3 p3, T4 p4)
        {
            if (conn.IsInInvokerThread)
            {
                func(p1, p2, p3, p4); return;
            }
            IAsyncResult res = conn.BeginInvoke((Action) delegate() { func(p1, p2, p3, p4); }, null, null);

            Async.WaitFor(res);
            conn.EndInvoke(res);
        }
Beispiel #4
0
        public static void Invoke1 <T1>(this IInvoker conn, Action <T1> func, T1 p1)
        {
            if (conn.IsInInvokerThread)
            {
                func(p1); return;
            }
            IAsyncResult res = conn.BeginInvoke((Action) delegate() { func(p1); }, null, null);

            Async.WaitFor(res);
            conn.EndInvoke(res);
        }
Beispiel #5
0
        public static void Invoke(this IInvoker conn, Action func)
        {
            if (conn.IsInInvokerThread)
            {
                func(); return;
            }
            IAsyncResult res = conn.BeginInvoke(func, null, null);

            Async.WaitFor(res);
            conn.EndInvoke(res);
        }
Beispiel #6
0
        public static R InvokeR4 <R, T1, T2, T3, T4>(this IInvoker conn, Func <T1, T2, T3, T4, R> func, T1 p1, T2 p2, T3 p3, T4 p4)
        {
            if (conn.IsInInvokerThread)
            {
                return(func(p1, p2, p3, p4));
            }
            IAsyncResult res = conn.BeginInvoke((Func <R>) delegate() { return(func(p1, p2, p3, p4)); }, null, null);

            Async.WaitFor(res);
            return((R)conn.EndInvoke(res));
        }
Beispiel #7
0
        public static R InvokeR1 <R, T1>(this IInvoker conn, Func <T1, R> func, T1 p1)
        {
            if (conn.IsInInvokerThread)
            {
                return(func(p1));
            }
            IAsyncResult res = conn.BeginInvoke((Func <R>) delegate() { return(func(p1)); }, null, null);

            Async.WaitFor(res);
            return((R)conn.EndInvoke(res));
        }