我创建了一个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
}
}
答案 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)
[OperationContractAttribute(AsyncPattern=true)]
使用ChannelFactory时不支持事件驱动的异步调用模型。看到 MSDN - How to: Implement an Asynchronous Service Operation