[英]How to send soap with an image attachement in vb6 to a web service in c# with MTOM?
[英]How to call Soap/mtom web service asynchronously from C# winform
我正在嘗試將一個半大的tiff和一個Gal文件調用/推入Java Web服務。 該平台是Visual Studio 2013,C#Windows窗體應用程序。
我指向WSDL文件,“平台”正在為我生成服務引用類。 這一切都是從我身上抽象出來的,這是一件好事,因為我是這個領域的新手。 我沒有選中“基於生成任務的代碼”,然后得到了addSample和addSampleAsync方法。
我填充類字段並向上推代碼。
addSample代碼可以正常工作,但會阻止UI。
異步代碼addSampleAsync也可以工作,位速度較慢並且不是完全異步的。 addSampleAsync將UI鎖定大約一半的處理時間,並且在同一時間段內不會返回對fncTestUpload的函數調用。
//Dimensioned at class level
//private static addSamplePortClient Service = new addSamplePortClient();
//private static addSampleResponse Myresult = new addSampleResponse();
//ThisRequest is the WSDL modeled class object.
//This code works, but is slow, 30 seconds on wifi
ResponseType Myresult = Service.addSample(ThisRequest.Request);
MessageBox.Show(Myresult.Message + Myresult.Code);
//This code locks up the UI for about 15 - 20 seconds then takes another 15 to display the messagebox
fncTestUpload(ThisRequest);
async void fncTestUpload(addSampleRequest SentRequest)
{
Myresult = await Service.addSampleAsync(SentRequest.Request);
MessageBox.Show(Myresult.Response.Message + " - " + Myresult.Response.Code);
}
我將響應對象設置為類級別的變量,以期在調用fncTestUpload的函數中對其進行處理,該函數認為在調用Async函數時會立即返回該對象。 直到15秒后它才返回。
我花了幾個小時來搜索,卻沒有找到關於為什么addSampleAsync無法像宣傳的那樣工作的任何答案。
微軟的教程也可以用Dilbert的Elbonian編寫。 我無法關注他們,也沒有發現他們有幫助,所以請不要引導我。
當您在方法中使用'await'關鍵字時,您的意思是“好吧,繼續工作,我會回電話給您 ,請告訴我完成的時間”。
因此,等待15秒是您的服務處理請求的時間,然后在先前等待的方法完成后調用由async方法生成的狀態機以返回到該方法。 那是等待的正常行為。
關於耗時15秒的MessageBox,可能是Response屬性正在延遲加載,並且實際上在您訪問這些屬性時首次嘗試加載代碼/消息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.