活动是同步的。我有这个应用程序,我的主要形式开始一个线程的一环,听流。当东西来沿着流上的一个事件是发射循环的主要形式。

如果主要形式是缓慢的,或者显示了一个消息框或什么的循环将暂停。什么是最好的方法解决这个?通过使用回调和调用的主要形式?

有帮助吗?

解决方案

嗯,我已经使用不同的方案,取决于我所需要的时间。

我相信BeginInvoke很可能是最容易编码,因为你几乎没有。不管怎样你应该使用援引了,所以只有改变以BeginInvoke.使用一个回调一个单独的线将完成同样的事情(如只要你使用的线程池排队回调)为使用BeginInvoke.

其他提示

因为你使用一种形式,更简单的方法是使用 BackgroundWorker 组成部分。

该BackgroundWorker类可以让你 运行上的一个操作一个单独的, 专线。耗费时间的 这样的操作和数据库下载 交易可能导致用户 接口(UI)看起来就像它 停止答复,而他们 运行。当你想要一个响应的用户界面 和你面对的是长期拖延 与这样的行动, BackgroundWorker类提供了一个 方便的解决方案。

事件只是 代表, ,因此使用BeginInvoke.(见 进步方法的呼吁。净的环境)

你有几种选择,因为已经详细,但以我的经验,你最好离开的代表和BeginInvoke,并使用BackgroundWorker而不是(v2。0+),因为它是更容易使用,也可以让你与的主要形式在线程的完成。所有在一个非常轮实施解决方案,我们发现。

系统。ComponentModel(.BackgroundWorker 的确是一个很好的起点。它会做你的异步工作,给你的通知的重要事件,并设法更好地整合形式。

例如,可以激活的进展通知登记的处理程序,则为ProgressChanged事件。(这是强烈建议如果你有一个长期的、异步的过程,你不想要你的用户认为的应用程序冻结)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top