所以我在C#中使用Visual Studio,我有一个加载图像的GIF,当我调用Web服务时,我将需要一两分钟来获取所需的数据。 gif旋转正常但我的问题是,当它调用Web服务时,gif停止旋转。有人知道如何在通话时保持旋转吗?最好能用C#而不是HTML。
答案 0 :(得分:0)
您可以使用c#的async / await来获取您正在寻找的行为。这是一个不会阻止UI线程的示例。
这是一个表单的代码隐藏:一个带有旋转gif的图片框,一个用于报告状态的标签控件,以及一个用于启动该过程的按钮。
private async void btnCallWebService_Click(object sender, EventArgs e)
{
lblStatus.Text = "Running method...";
string result = await LongRunningMethod();
lblStatus.Text = result;
}
private async Task<string> LongRunningMethod()
{
await Task.Delay(5000);
return "Method complete";
}
在这种情况下,LongRunningMethod将是您的Web服务调用,需要很长时间。您应该使您的Web服务方法调用异步,并使返回类型为任务。
编辑:
您可以从异步调用中返回任何类型。您提到您的Web调用的形式为:Result result = WebServiceCall(login,password);
您可以创建一个异步调用Web服务方法的方法。
private async Task<Result> WebServiceCallAsync(string login, string password)
{
return WebServiceCall(login, password);
}
then you would use this method like:
Result result = await WebServiceCallAsync("user name", "password");