.net使用delegate实现异步调用

发布于:2021-11-29 11:13:03

最*在应用中,需要实现一个异步调用,由于刚接触.net不深,还是费了不少劲的,不过最后总算也能用了。下面是代码,记录下来,以备以后使用。

{
int totalpagesize = 0;
if (totalSize % MAX_TRADE_PAGE_SIZE == 0)
{
totalpagesize = totalSize / MAX_TRADE_PAGE_SIZE;
}
else
{
totalpagesize = totalSize / MAX_TRADE_PAGE_SIZE + 1;
}
TradesSoldGetRequest req = new TradesSoldGetRequest();
req.Fields = "tid";
req.PageSize = MAX_TRADE_PAGE_SIZE;
TradesSoldGetResponse rsp;
for (var i = 1; i <= totalpagesize; i++)
{
int repeatNum = 0;
req.PageNo = i;
while (repeatNum++ < 5) //如果失败,最多重试5次
{
rsp = client.Execute(req, session);
if (rsp != null && !rsp.IsError && rsp.Trades.Count > 0)
{
BatchAddTradeFromTop2Local(rsp.Trades, session);
break;
}
}
}
UpdateUserTradeSync(nick);
}

上面这句代码首先通过delegate对象,把步骤1中定义的方法进行包装成异步理:new GetAllSoldTradesFromTopDelegate(SyncSoldTradesTop2Local)

然后调用BeginInvoke方法就可以实现对SyncSoldTradesTop2Local的异步调用了。在BeginInvoke方法的参数列表中,前三个是和自己定义的方法中的参数列表一致的,最后两个是和异步完成后的回调相关的,根据需要自行设置。




相关资源:ASP.NET大任务异步处理的实现

相关推荐

最新更新

猜你喜欢