2017-03-15 78 views
0

我正在处理我的项目并自动发送电子邮件,但是我的表单受到影响并冻结,直到处理完成。如何在不冻结当前窗口的情况下工作?我正在研究VB.Net。防止表单冻结

+0

我在youtube上发现了一个关于backgroundworker的视频,并开始处理它。我希望它能解决我的问题。 –

+0

https://www.youtube.com/watch?v=jv4FdoaUMQE –

+1

有很多资源比youtube更好 - 例如MSDN,以及这里的问题。大多数YouTube视频将其降低为魔法(伴随着糟糕的音乐) - 点击此处;键入这个;点击这里;键入这个。你最终根本不知道它做了什么,为什么有些事情是这样或那样,或者是你知道关于你正在使用的技术的关键所在。 – Plutonix

回答

-1

您发送的电子邮件代码与UI线程同步运行。您需要在单独的线程上运行该代码以维护UI响应。

看看下面让你开始:

Safe, Simple Multithreading in Windows Forms, Part 1

Multithreading in Windows Forms Controls

第一个链接是很老,但它显示了如何完成你正在使用的Thread类尝试。如果你不关心与表单同步并在控件上设置属性,那么这将做你想要的。但是,我更喜欢第二个链接...

第二个链接使用BackgroundWorker。这是最好的方法,至少对我而言。如果您不关心收到该流程的通知(在这种情况下发送电子邮件),您可以随时忘记并完成。但是,使用此类,您还可以直接使用表单,并且它是BackgroundWorker的RunWorkerCompleted事件中的控件。

+0

目前正在看它先生。 –

+0

任何人都在意解释我的回答没有用处? –

+2

我没有downvote,但它可能是由于几个原因。有些人喜欢看到世界在燃烧。 2.这是一个很糟糕的问题,通过回答你保持问题的存在3.你真的没有提供任何你的答案中的链接的上下文。链接可能会死亡,如果他们做的内容与他们一起死去。 – Bugs