webservice-Async调用

时间:2011-03-16 13:11:55

标签: c# web-services windows-phone-7

我有一个webservice正在运行,其中一个方法在调用时不会立即返回。它有数据时返回。一旦它返回,客户端再次调用它,以便在服务有数据时向客户端提供数据。这是为了避免轮询。但问题是,它在模拟器中工作正常,而在设备中虽然webservie没有返回,但客户端最终会在下面的函数中导致null异常。

public string Endgetstatus(System.IAsyncResult result) 
{
    object[] _args = new object[0];
    string _result = ((string)(base.EndInvoke("getstatus", _args, result)));
    return _result;
}

这就是我调用异步函数的方法,它在有数据时返回,否则它不会返回。

client.getstatusCompleted += new EventHandler<getstatusCompletedEventArgs>(updatereceived);

client.getstatusAsync();//this returns only when it has data

设备是否在一段时间后终止任何打开的连接并强制客户端调用Endgetstatus函数?我已将超时设置为23小时

BasicHttpBinding binding= new System.ServiceModel.BasicHttpBinding();
TimeSpan interval = new TimeSpan(23, 14, 18);
binding.ReceiveTimeout = interval;
binding.SendTimeout = interval;

一分钟后,客户结束

public string Endgetstatus(System.IAsyncResult result) {

虽然webservice没有返回,但导致参数为null异常。

任何人都可以告诉我在设备上工作应该做些什么,因为它在模拟器上工作正常吗?

请注意这个关于windows phone 7和silverlight c#

1 个答案:

答案 0 :(得分:0)

我相信默认情况下,WebClient会在1分钟后超时 模拟器和设备行为之间的区别仅在于平台,还是您正在以不同的方式执行/计时。

Yoy可能想要考虑Raw Toast通知,让您的应用程序知道有一些新数据要求,因为这不需要从设备进行轮询。