pdahd,邓稼先,绿豆沙冰机cnxiangyi
业务场景:有主表、子表两个gridview点击主表的行,会自动读取主表对应的子表数据
但是如果反复点击会导致反复读取,其实反复点击的时候只需要最后一次执行查询,前面的几次点击都是无意义操作
根据这一需求设计了一个函数:
private static list<system.windows.forms.timer> tup = new list<system.windows.forms.timer>();
/// <summary>
/// 延时执行
/// </summary>
/// <param name="easysub">需要执行的代码/函数</param>
/// <param name="keyname">任务分组</param>
/// <param name="timeout">等待timeout时间后执行代码,如果当前分组中进入新的任务则前面的任务放弃,执行新的任务</param>
/// <param name="chkstatus">等待一定时间且循环验证chkstatus</param>
public static void delayrun(action easysub, string keyname, int timeout = 501)
{
system.windows.forms.timer lasttimer = tup.find(t => t.tag.tostringex() == keyname);
if (lasttimer != null)
{
lasttimer.enabled = false;
lasttimer.enabled = true;
}
if (lasttimer == null)
{
system.windows.forms.timer t = new system.windows.forms.timer();
t.interval = timeout;
t.enabled = true;
t.tag = keyname;
tup.add(t);
t.tick += delegate (object sender, eventargs e)
{
((system.windows.forms.timer)sender).enabled = false;
string name = keyname;
easysub();
};
}
}
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论