我有一個用C#編寫的WPF應用程序。它會調用我寫的WCF服務。有時,WCF服務可能需要長達20秒才能返回(取決於是否需要刷新數據)。我知道我可以讓WCF服務支持異步調用,但另一個我認爲可行的解決方案是將調用WCF服務包裝到一個新線程中。我這樣做了以下代碼:線程不會異步
new System.Threading.Thread(
new System.Threading.ThreadStart(
delegate()
{
Action del = delegate()
{
MyService.MyServiceClient ms = new MyService.MyServiceClient();
lblTotalCost.Text = ms.GetTotalCost().ToString("C");
};
this.Dispatcher.BeginInvoke(del);
})).Start();
我把它放到我的一個UserControl的構造函數中,在InitializeComponent()之後。
沒有它,在服務調用完成之前,應用程序不會出現。我希望添加這個可以使應用程序立即出現,並且一旦服務調用完成,標籤就會填充。但令我驚訝的是,這並沒有發生。直到服務調用完成後,應用程序纔會出現。
這需要如何修改,以便它做我打算做的事情?
謝謝!
好多了!謝謝!認爲可能是這種情況,但不想在不理解正在發生的事情或確認理論的情況下實施變革是事實。感謝幫助! – Nullqwerty 2012-02-01 18:35:12