WCF服务库" Fire and forget"来自Web应用程序

时间:2016-07-21 08:55:35

标签: c# asp.net wcf

我创建了一个WCF服务库,并在我的Web应用程序(asp.net)中添加了内置的.dll作为参考。

我也尝试过IsOneWay = true,但看起来它不起作用。

我正在尝试"火与忘记"从Web应用程序,并在我的服务方法中放置10秒钟来测试它。但我的网络应用程序等待按钮点击10秒钟。 请指导我可能做错的地方和地点。提前谢谢。

网络应用按钮点击:

 EmailAndSync.Service1 svc = new Service1();
 svc.saveData();

服务:

[ServiceContract]
    public interface IService1
    {
        [OperationContract(IsOneWay = true)]
         void saveData();
    }

public class Service1 : IService1
    {
        public void saveData()
        {
            System.Threading.Thread.Sleep(10000);
            sendUsersMail("sak_user@domain.com");
        }
        protected void sendUsersMail(string emailid)
        {
        //stuff
         }
 }

2 个答案:

答案 0 :(得分:0)

使用Delegate来调用服务并且运行顺利。

网络应用代码:

public delegate void Worker();
Worker newthread;

//on button click
 newthread = new Worker(callmethod);
 newthread.BeginInvoke(null, null);

 protected void callmethod()
    {
        EmailAndSync.Service1 svc = new Service1();
        svc.saveData(0);
        newthread.EndInvoke(null);
    }

答案 1 :(得分:0)

对于返回void或不是

的方法,

[OperationContractAttribute(AsyncPattern=true)]

defaulting rules

使用ChannelFactory时不支持事件驱动的异步调用模型。看到 MSDN - How to: Implement an Asynchronous Service Operation