Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 避免在WPF应用程序中挂起UI_C#_Wpf_Multithreading - Fatal编程技术网

C# 避免在WPF应用程序中挂起UI

C# 避免在WPF应用程序中挂起UI,c#,wpf,multithreading,C#,Wpf,Multithreading,我是MVVM和WPF的新手。我的WPF应用程序将每2分钟调用一次web服务,并在UI中显示响应。通过单击UI中的按钮,提供手动调用同一web服务的机会。我的web服务超时为5000ms。我的问题是,如果web服务需要超过1000毫秒,如何避免汉兴UI。Plz提供了一些实现提示这将是实现多线程的好地方,在一个线程中执行所有web应用程序通信允许主UI线程响应用户输入 以下是一些链接,可以帮助您继续: 使用线程怎么样?早在2007年,MSDN就在基础知识方面做了很好的总结: 确保您不仅关注调

我是MVVM和WPF的新手。我的WPF应用程序将每2分钟调用一次web服务,并在UI中显示响应。通过单击UI中的按钮,提供手动调用同一web服务的机会。我的web服务超时为5000ms。我的问题是,如果web服务需要超过1000毫秒,如何避免汉兴UI。Plz提供了一些实现提示这将是实现多线程的好地方,在一个线程中执行所有web应用程序通信允许主UI线程响应用户输入

以下是一些链接,可以帮助您继续:


  • 使用线程怎么样?早在2007年,MSDN就在基础知识方面做了很好的总结:

    确保您不仅关注调度员,还关注
    BackgroundWorker
    上的第二个调度员

    如果您根本不熟悉线程(看起来可能是这样),那么您可能应该从MSDN中的普通线程基础知识开始:


    您可以使用异步Web服务调用与Web服务通信

    示例:


    基本上,您不应该在UI线程上执行任何可能需要任何时间才能执行的工作。您的视图模型中应该有某种形式的命令对象,它被数据绑定到视图的按钮上。该命令应该在另一个线程上异步调用web服务调用。这样,UI将永远不会挂起,等待命令返回,因为命令将很快返回。当异步调用返回时,您可以处理需要更新的任何UI内容。

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

    你不能增加web服务的超时时间吗?@ArsenMkrt-我不想等待5秒让UI响应…更不用说更长的时间了。