我通过WCF将一个业务对象列表加载到一个列表框中。
我想加载到另一个线程并显示进度条窗口。WPF应用程序中的长期操作进度窗口
但是如何?我需要在第二个线程中调用WCF服务,并将其返回值返回给第一个(UI)线程。这是我不知道的一点。如何返回? 或者什么应该是在后台调用数据和显示进度的正确工作流程?
现在我:
- 显示进度窗口
- 创建一个新的线程,并调用WCF服务
- 返回值< - 我不知道
- 关闭窗口
但是 - 这工作流程是否正确?
我不想使用backgroundworker,因为我可以调用许多不同的WCF服务,而不仅仅是一个我可以写入DoWork方法的服务。
我有一个WCFClient类,我在其中调用所需的所有服务。这里是方法一(所有的方法都是相同只要求不同的服务):
public class Client
{
public List<BusinessDto> GetBusinesses(int userID)
{
OnConnecting();
ServiceClient client = null;
BusinessDto[] dtos = null;
try
{
client = new ServiceClient();
dtos = client.GetBusinesses(userID);
}
catch
{
MessageBox.Show(Properties.Resources.ConnectionNotSucessful, Properties.Resources.ApplicationName, MessageBoxButton.OK, MessageBoxImage.Error);
}
finally
{
if (client != null) client.Close();
OnClosing();
}
return dtos.ToList();
}
}
我赶上了Onconnecting和WCFClient开放OnClosing事件和关闭一个新的窗口进度。
但我不会在新线程中调用WCF服务,因为我不知道如何。
谢谢,我试图做两天不成功。
请显示您尝试过的内容的示例代码,如果您向我们展示您尝试过的内容,则可以更轻松地给出建议。另外,尽可能简化您的示例。 – Kiril 2010-09-25 02:07:59