Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# webservice异步调用_C#_Web Services_Windows Phone 7 - Fatal编程技术网

C# webservice异步调用

C# webservice异步调用,c#,web-services,windows-phone-7,C#,Web Services,Windows Phone 7,我有一个Web服务正在运行,它的一个方法在被调用时不会立即返回。它在有数据时返回。一旦返回,客户机将再次调用它,以便在服务有数据时向客户机提供数据。这是为了避免投票。但问题是,它在emulator中工作得很好,而在设备中,尽管WebService不返回,但客户端在下面的函数中结束,从而导致空异常 public string Endgetstatus(System.IAsyncResult result) { object[] _args = new object[0]; str

我有一个Web服务正在运行,它的一个方法在被调用时不会立即返回。它在有数据时返回。一旦返回,客户机将再次调用它,以便在服务有数据时向客户机提供数据。这是为了避免投票。但问题是,它在emulator中工作得很好,而在设备中,尽管WebService不返回,但客户端在下面的函数中结束,从而导致空异常

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
一分钟后,客户机结束在

public string Endgetstatus(System.IAsyncResult result) {
导致参数null异常,尽管webservice不返回

有人能告诉我应该怎么做才能在emulator上正常工作吗


请注意,这是关于windows phone 7和silverlight c的。

我相信默认情况下,WebClient将在1分钟后超时。
仿真器和设备行为之间的区别只是平台的不同,还是您的操作/计时方式不同


YOY可能想考虑原始的ToStudio通知,让您的应用程序知道有一些新数据要请求,因为这不需要从设备中轮询。

模拟器和设备之间的行为没有差别。我最初使用推送通知,但它非常不稳定,使用它我无法保证我的解决方案会起作用。这就是我选择这种架构的原因,客户机将在webservice中调用一个方法,并且它只在有数据时返回。@user641247您是否尝试过运行网络跟踪或类似程序(可能使用Fiddler或WireShark)来查找其中的差异?
public string Endgetstatus(System.IAsyncResult result) {