public static AsyncCallback CreateInvokeCallback(this IInvoker invoker, AsyncCallback callback) { return(delegate(IAsyncResult result) { IAsyncResult rtmp = invoker.BeginInvoke(callback, null, result); invoker.EndInvoke(rtmp); }); }
//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); }); }
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); }
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); }
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); }
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)); }
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)); }