如何调用Web服务异步方法到Windows窗体应用程序?

时间:2019-01-25 06:40:52

标签: c# asynchronous

我在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()方法。但是当我尝试调用时,我没有得到方法的名称, 预先感谢。

1 个答案:

答案 0 :(得分:0)

Task and async/awaitSystem.Web.Services.WebService之类的传统技术结合使用是一个坏主意,因为它是在引入async/await之前设计的。这些WebServices无法正常使用。建议您查看Asp.Net Core或至少查看WCF而不是System.Web.Services.WebService。另外,您还需要决定异步的位置(在客户端,在服务器端还是在这两者上)。

但是,如果它不是生产代码,则可能FireService1SoapClient生成了具有BeginXXX和EndXXX前缀的“旧样式”异步方法,并且您需要不使用obj.BeginInsert关键字来调用await

相关问题