我在Web服务中编写了Firebase数据库插入代码,并在Web Service中声明了该方法为异步方法。现在,我想在Windows窗体应用程序按钮单击事件中调用该异步方法。
这是我尝试过的:
网络服务代码:
namespace Webservice
{
public class FireService1 : System.Web.Services.WebService
{
[WebMethod]
public async Task Insert()
{
mainform = new Form1();
SetResponse response = await
client.SetTaskAsync("Employee/"+mainform.txt_EID.Text,
Data.Instance.InsertInfo());
StudentData student = response.ResultAs<StudentData>();
}
}
}
WinForm应用程序的代码:
namespace FirebaseCRUD
{
public partial class Form1 : Form
{
FireService1SoapClient obj = new FireService1SoapClient();
private void btn_insert_Click(object sender, EventArgs e)
{
await obj.Insert();
}
}
}
我希望在插入按钮单击事件中调用Insert()方法。但是当我尝试调用时,我没有得到方法的名称, 预先感谢。
答案 0 :(得分:0)
将Task and async/await
与System.Web.Services.WebService
之类的传统技术结合使用是一个坏主意,因为它是在引入async/await
之前设计的。这些WebServices无法正常使用。建议您查看Asp.Net Core
或至少查看WCF
而不是System.Web.Services.WebService
。另外,您还需要决定异步的位置(在客户端,在服务器端还是在这两者上)。
但是,如果它不是生产代码,则可能FireService1SoapClient
生成了具有BeginXXX和EndXXX前缀的“旧样式”异步方法,并且您需要不使用obj.BeginInsert
关键字来调用await
。