![](/img/trans.png)
[英]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.