从Windows手机调用webservice功能

时间:2014-05-26 08:01:59

标签: c# web-services windows-phone

我创建了一个webservice和方法如下:

[WebMethod]
public bool GetMasterExit(int RoomID)
{
    if(GameList[RoomID][0] == "\0")
        return true;
    else
        return false;
}

然后我使用以下方式从WP客户端调用此方法,但是有一个问题,我希望主进程被阻塞,直到webservice返回我想要的值,但这样的方式是延迟错误的值。

我曾尝试使用Await,但我收到了一个错误,"无法等待无效",所以任何人都知道如何解决这个问题?

public void Test()
{
    ServiceSoapClient GameClient = new ServiceSoapClient();
    GameClient.GetMasterExitCompleted += _clientGetMasterExitCompleted;
    GameClient.GetMasterExitAsync(RoomID);
    Console.WriteLine(MasterExit);
}


public void _clientGetMasterExitCompleted(object sender, GetMasterExitCompletedEventArgs e)
{
    MasterExit = e.Result;
}

2 个答案:

答案 0 :(得分:0)

如果您愿意使用await,则必须在函数签名中添加修饰符async。希望这会有所帮助。

像这样使用asyncawait

public async void Test() 
{
    ServiceSoapClient GameClient = new ServiceSoapClient();
    GameClient.GetMasterExitCompleted += _clientGetMasterExitCompleted;
    await GameClient.GetMasterExitAsync(RoomID);
    Console.WriteLine(MasterExit);
}

答案 1 :(得分:0)

  

我希望主进程被阻止,直到webservice返回值

这是一种不正确的方法。特别是在WP等移动平台上,你不允许像这样阻止用户界面。

正确的解决方案是使用await。关注Task-based Asynchronous Pattern并撰写EAP wrapper called GetMasterExitTaskAsync