我有WPF应用程序需要在启动时访问WCF服务(登录窗口)。每次应用程序在Windows 7上运行时,它都会在登录时冻结,直到从WCF获得响应。有没有办法以不同的方式设计这个过程?
答案 0 :(得分:4)
听起来你需要异步拨打电话。在新线程上启动呼叫(最好使用Task),或使用asynchronous design pattern呼叫WCF服务。
答案 1 :(得分:2)
将WCF调用放在后台线程中
答案 2 :(得分:1)
在执行WCF服务呼叫时,有两种原因被视为“冻结”:
答案 3 :(得分:0)
如果您需要此服务调用的响应来启动应用程序,您可以使用后台线程来调用此服务并处理返回值。当此线程正在使用该服务时,您可以显示窗口或启动画面。
如果您不需要此服务方法的retrun值,则可以在服务上使用[OperationContract(IsOneWay = true)]。所以你不必担心线程和东西。
答案 4 :(得分:0)
您正在主线程上调用WCF调用,因此它似乎会崩溃。
你可以通过定义一个Thread,然后定义一个threadstart,传入你的登录WCF调用,以及调用thread.start();来轻松地完成线程。并传入你定义的线程启动。
后台工作者非常相似,你可以将你的代码放在backgroundWorker1_DoWork()方法中
尝试使用此线程进行异步WCF调用