c# – WPF在异步等待模式中使用带有WCF的MVVM
发布时间:2020-12-15 21:04:36 所属栏目:百科 来源:网络整理
导读:我正在构建一个使用MVVM作为模式和WCF后端的 WPF应用程序. 我的UI必须始终具有响应性,对于某些控件,数据最多可以加载10秒. 以下代码运行良好,并且在我的viewmodel中,其中ConfigurationsForInterface是绑定到我的控件的Observable类型: ConfigurationsForInt
我正在构建一个使用MVVM作为模式和WCF后端的
WPF应用程序.
我的UI必须始终具有响应性,对于某些控件,数据最多可以加载10秒. 以下代码运行良好,并且在我的viewmodel中,其中ConfigurationsForInterface是绑定到我的控件的Observable类型: ConfigurationsForInterface = new ObservableCollection<string>() { "Loading..." }; ConfigurationsForInterface = await GetConfigurationInterfaceXAsync(); 工作正常的方法: public async Task<ObservableCollection<string>> GetConfigurationHL7Server5Async() { ObservableCollection<string> result; using (var localClient = new ManagerListenerClient(Globals.ChannelBinding,Globals.EndpointAddress)) { result = await localClient.GetConfigurationsAsync("interfacex"); } return result; } 当我为服务(用户)设置上下文时重用已在应用程序的其他区域中打开的服务客户端时冻结我的UI的方法:
看起来WCF客户端以某种方式绑定到我的UI线程并导致我的UI冻结,直到加载数据.我可以从调试中看到它不会在方法本身等待. 有人可以帮助我解决为什么我无法重用我在其他地方使用的WCF客户端对象而不是总是在异步上下文中,例如同步调用viewmodel 解决方法
感谢@Rowbear,我确定了真正的问题.
我将绑定从WsHttpBinding更改为NetTCPBinding,然后一切运行良好的异步.对于我的应用程序,我可以轻松使用NetTCPBinding. 似乎某些东西仍在同步.在WsHttpBinding实现中. 谢谢!建议. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |