C# - 如何使加载gif继续旋转

时间:2017-06-09 16:05:41

标签: c# visual-studio-2013 gif

所以我在C#中使用Visual Studio,我有一个加载图像的GIF,当我调用Web服务时,我将需要一两分钟来获取所需的数据。 gif旋转正常但我的问题是,当它调用Web服务时,gif停止旋转。有人知道如何在通话时保持旋转吗?最好能用C#而不是HTML。

1 个答案:

答案 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");