如何在客户端断开连接后保持WCF服务运行?

时间:2016-02-03 21:16:02

标签: .net wcf silverlight

我有一个Silverlight应用程序调用WCF服务(全双工),它托管在另一个网站上(我的创作,我都可以改变)。

系统工作正常,但此WCF服务需要很长时间才能执行(有时超过8分钟)。

我希望用户能够在服务完成之前关闭应用程序,并在以后再次打开应用程序时访问结果。如果互联网熄灭或会话过期,则相同。

我的计划是将服务生成的所有数据保存到表格中,当用户再次进入系统时,我可以检查此表格中的内容并将其显示给他。

问题是当关闭应用程序(例如关闭浏览器)时,服务会保持运行一段时间,然后在完成之前关闭。我知道因为我在数据库表中记录了进度。当服务达到30%时我关闭浏览器。它一直运行直到50%然后停止。

所以问题是:如果客户端因任何原因断开连接,我如何保持服务在服务器上运行?

1 个答案:

答案 0 :(得分:0)

我认为您的问题与wcf无关。在这种情况下,您需要异步运行方法。

首先为你的wcf客户端创建一个类。

public class MyClient
{
    public void AsyncWcfCall(param1, param2)
    {
         Task.Run(() => DoCall(param1, param2));
    }

    private void DoCall(param1,param2)
    {
       using(var cleint = new MyWcfService())
       {
           //call the service, save to database etc.. and handle exceptions
       }
    }
}

现在从ViewModel实例化上面的类,只需调用AsyncWcfCall。