C# 异步调用代理类
2018-07-20 来源:open-open
异步调用代理类
AsyncInvokeProxy.cs
使用:
AsyncInvokeProxy.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace AsyncInvokeDemo
{
public class AsyncInvokeProxy<T1>
{
private Action<T1> _task;
public AsyncInvokeProxy(Action<T1> task)
{
this._task = task;
}
public void BeginEnvoke<T2>(T1 args, Action<T2, Exception> cb, T2 cbArgs)
{
this._task.BeginInvoke(args, new AsyncCallback((r) =>
{
try
{
cb(cbArgs, null);
this._task.EndInvoke(r);
}
catch (Exception ex)
{
cb(cbArgs, ex);
}
}), cbArgs);
}
}
}
使用:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AsyncInvokeDemo
{
class Program
{
static void Main(string[] args)
{
Action<A> test = (a) =>
{
Console.WriteLine("start to invoke");
for (int i = 0; i < 1000; i++)
{
Console.WriteLine(i);
}
Console.WriteLine("invoke args aint : {0},astr: {1} ", a.aInt, a.aStr);
};
AsyncInvokeProxy<A> proxy = new AsyncInvokeProxy<A>(test);
proxy.BeginEnvoke<B>(new A { aInt = 1, aStr = "astr" }, (b, ex) =>
{
if (ex != null)
{
}
Console.WriteLine("callback ret bint: {0},bstr: {1}", b.bInt, b.bStr);
}, new B { bInt = 2, bStr = "bstr" });
Console.ReadLine();
}
}
}
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
上一篇: iOS 时间类常用方法
最新资讯
热门推荐