有没有办法做这样的事情?Silverlight触发一个事件,然后再触发另一个事件
背景: 我点了一个按钮。点击按钮时,我尝试显示“加载”消息,运行一些执行一些UI工作的代码,然后解除“加载”消息。通常需要几秒到20秒的时间。目前加载消息根本不显示,并且UI冻结,直到完成按钮点击中的代码。
我已阅读关于Background Worker和调度程序,但一直未能得到它的工作。我不确定是否因为按钮点击中的代码调用了各种其他代码(包括第三方的东西),但是我无法使其正确运行。这一切仍然有效,但它仍冻结了用户界面,并且不显示加载消息。
所以,我想知道是否有另一种解决方法。是否可以进行设置,以便在按钮上单击我只显示加载消息,然后稍后再启动另一个执行我长时间运行的进程的事件?这样用户界面仍然会冻结几秒钟,但至少会显示“加载”消息。
使用BackgroundWorker和你的问题都将解决没有UI冻结。你遇到了什么问题? BackgroundWorker的重要技巧是在调用UI元素上的方法时,必须使用Dispatcher.Invoke()。 – 2012-04-24 22:50:01
我不太确定。我使用了BackgroundWorker和Dispatcher,应用程序按照通常的方式工作,包括点击按钮后仍冻结整个应用程序。这个问题甚至可能不是线程或UI相关的。也许这个过程需要很长时间才能完成。当发生这种情况时,我看到我的CPU达到了50%,这通常不会发生,除非发生了一些大事。 – dtc 2012-04-24 23:58:19
听起来像对图表元素本身的调用很慢。 System.Threading.Timer是你正在寻找的。 – 2012-04-25 00:31:12