避免在WPF应用中挂起UI

时间:2011-01-06 20:08:14

标签: c# wpf multithreading

我是MVVM和WPF的新手。我的WPF应用程序将每2分钟调用一次Web服务,并在UI中显示响应。通过单击UI中的按钮,提供手动调用相同Web服务的机会。我的网络服务超时是5000毫秒。我的问题是,如果Web服务需要超过1000毫秒如何避免使用hanhing UI。 Plz提供了一些实现提示

5 个答案:

答案 0 :(得分:5)

这将是实现多个线程的好地方,在一个线程中执行所有Web应用程序通信允许主UI线程响应用户输入。

以下是一些可以帮助您前进的链接:

  1. Background Worker
  2. Multithreading in WPF
  3. Getting started with Multithreading & WPF

答案 1 :(得分:3)

使用线程怎么样? MSDN从2007年开始就基础知识进行了很好的撰写:

WPF Threads: Build More Responsive Apps with The Dispatcher

确保您不仅关注Dispatcher,还关注BackgroundWorker上的第二个。

如果您根本不熟悉线程(看起来可能就是这种情况),那么您应该从MSDN的简单线程基础开始:

Threading (C# and Visual Basic)

答案 2 :(得分:2)

答案 3 :(得分:1)

基本上,你不应该在UI线程上做任何可以花费任何时间执行的工作。您应该在View Model中有某种形式的Command对象,该对象可以数据绑定到View的按钮。该命令应该在另一个线程上异步调用您的Web服务调用。这样,UI永远不会挂起,等待命令返回,因为命令将很快返回。当异步调用返回时,您可以处理更新您需要执行的任何UI操作。

答案 4 :(得分:0)

使用后台工作程序,如果要将数据返回到UI,请使用Dispatcher。如果使用.net 4.0,请使用Tasks。