我通過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