運行我創建了一個WCF服務應用程序,基本上什麼都沒有改變,除了名稱,默認的合同是存在的,包含方法GetData(Int32)
返回一個字符串。.NET WCF客戶端生成的任務似乎沒有真正在不同的線程
然後我已創建WPF客戶端應用靶向.NET FW 4.5所以其中I添加服務參考所述服務,我可以選擇包括在所產生的服務的客戶端的方法合同基於任務的異步變體。
現在,當我嘗試使用該服務,像這樣:
using (var client = new RhaeoServiceClient())
{
client.GetDataAsync(17).ContinueWith(t => MessageBox.Show(t.Result));
MessageBox.Show("inb4");
}
當從按鈕單擊處理程序,窗口攤位,按鈕保持按下一秒鐘左右,然後"inb4"
消息顯示執行,因此,在我看來,任務在主線程上運行並等待網絡,從而凍結UI。
的"inb4"
點擊後不顯示,似乎在執行任務後,就像我說的,一兩秒鐘等待。之後"inb4"
顯示,有結果一個消息框顯示爲好,但有什麼好笑的對我來說是再下一個消息框不等待對我關閉第一個,它只是彈出了第一個後立即開始第一個是秀。
所以這是令人困惑的,因爲它使得它看起來像繼續碼其實是在不同的線程中運行,並且不關心主線程是由第一個消息框阻止。但它如何顯示消息框,它只能從UI線程顯示(對嗎?)?
又爲何第一個消息框,等待執行任務後,則顯示出,然後通過覆蓋下一個沒有被關閉?
完美。非常感謝! – user2846145