1
我有一個WPF應用程序,它將XML數據異步上傳到Web服務。我把從非UI線程Web服務:ASMX Web服務 - SoapHttpClientProtocol.InvokeAsync
Task.Factory.StartNew(() => {
WebServiceHelper.ImportMarketDataAsync(....);
});
我已生成使用Wsdl.exe用代理。代理類提供兩種不同的方法來異步調用Web服務功能:
1)*方法名*異步
2)開始*方法名* &結束*方法名*
第一種方法使用SoapHttpClientProtocol。 InvokeAsync,第二種方法使用SoapHttpClientProtocol.BeginInvoke。
在這兩種情況下,當代理命中invoke函數(即InvokeAsync或BeginInvoke)時,將從UI線程內調用Web服務調用,因此應用程序由於UI線程繁忙而顯得無響應。如果我在foreach循環中爲250個元素的集合調用異步函數,UI將凍結,直到所有異步調用完成。
有沒有一種方法可以調用asmx web服務而不阻塞主UI線程?
感謝先進!
Afaik wpf是asmx的替代品。您正在使用一種或兩種。 Asmx幾乎已經過時了 – Independent
感謝Jonas的評論。你的意思是WCF嗎? –
是的,WCF當然。雖然,是一個側面說明。我沒有看到你的問題是否與Webservice相關,或者它是否具有gui responsivity的問題,你可以通過在新的Thread中而不是Task中啓動請求來解決這個問題。 – Independent