我正在尝试调用/推送一个半大的tiff和一个Gal文件到java web服务。 该平台是Visual Studio 2013,C#windows窗体应用程序。如何从C#winform异步调用Soap/mtom Web服务
我指向WSDL文件,“平台”正在为我生成一个服务引用类。 这些都是从我这里抽象出来的,这是一件好事,因为我是这个竞技场的新手。 我离开了“生成基于任务的代码”,我得到了一个addSample和addSampleAsync方法。
我填充类字段并将代码向上推。
addSample代码工作正常,但阻止用户界面。
异步代码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,它调用一个异步函数时,原以为会立即返回功能做它的东西,希望对象的类级变量。直到15秒后它才会返回。
我已经花了几个小时搜索这个,并没有找到任何答案,为什么addSampleAsync工作不像广告。
微软的教程也可以用Dilbert的Elbonian编写。我无法跟随他们,也没有发现他们有帮助,所以请不要指引我。
与论坛网站不同,我们不使用“谢谢”或“任何帮助表示赞赏”,或在[so]上签名。请参阅“[应该'嗨','谢谢',标语和致敬从帖子中删除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -removed - 从 - 个)。 –