相当于Web应用程序中的application.doevents()?

时间:2016-05-25 16:25:13

标签: asp.net webforms

模拟Application.DoEvents()在Windows独立应用程序中的作用的最佳做法是什么?

我有一个vb.net网络应用程序,并且有一个页面,其中包含执行以下操作的按钮:

(按钮点击)

子(按钮点击)

隐藏包含刚刚点击的按钮的asp.panel
在db中插入记录 EmailPeople()

End Sub

Sub EmailPeople()
发送电子邮件给1个或更多人
结束子

单击时,电子邮件子程序会暂停5-6秒,然后面板消失。我希望面板立即消失,这样用户就不会继续按下mash并将额外的记录插入数据库......

么?

由于

2 个答案:

答案 0 :(得分:0)

Application.DoEvents是邪恶的,并且没有理由使用它。并且永远不会有理由使用它。

你可以创建一个自己的线程(异步函数),(正如Chris Fannin所说),你可以将逻辑移到web服务中并发出ajax请求。

另外.Net 4.5有一个名为SendMailAsync(System.Net.Mail)的方法

这个样本可以帮助您朝着正确的方向前进: Send Mail with Background Thread

答案 1 :(得分:0)

有时在Web应用程序中,您可能有一个带有“繁忙循环”(游戏开发人员的术语)的后台作业,该作业需要进行大量计算,并且您可能担心它将CPU锁定在100%,从而阻止了其他所有程序的运行在那台机器上

如果是这种情况,请在长时间运行的循环中使用Thread.Yield

https://docs.microsoft.com/en-us/dotnet/api/system.threading.thread.yield?view=netcore-3.1