在用户控件初始化

时间:2017-12-08 10:38:03

标签: c# winforms user-controls gif

我有一个UserControl,用于向API发送HTTP请求。发送代码位于ViewModel,但由UserControl调用,当前使用Load事件。在等待HTTP请求完成时,我想展示一个GIF动画。

问题在于:一旦HTTP请求完成,我就可以成功地使用load事件显示gif并使其消失。但动画不起作用。这对gif本身来说不是问题,因为它在所有其他用法中都可以正常工作。问题似乎与以下事实有关:代码是从Load事件调用的(而不是例如按钮点击)。

我可以添加一些代码,使gif动画正常吗?或者是否有比Load更好的事件?

更新

我确实设法更改了代码,因此动画开始了。但很快又冻结了。我是使用picLoading.Show()picLoading.Update()而不是整个Visible来完成的。

加载事件(在用户控件中)

private async void MyUserControl_Load(object sender, EventArgs e)
{
    // Display the loading animated gif
    picLoading.Visible = true;

    // Wait for the http request to complete 
    await viewModel.HttpRequestMethod(host, path);

    // Once completed, hide the picture again
    picLoading.Visible = false;
}

HTTP请求方法(在视图模型中)

public async Task<string> HttpRequestMethod(string host, string path)
{
    HttpClient httpClient;
    CookieContainer cookieContainer = new CookieContainer();
    HttpClientHandler handler = new HttpClientHandler()
    {
        CookieContainer = cookieContainer,
        UseDefaultCredentials = true
    };

    httpClient = new HttpClient(handler)
    {
        BaseAddress = new Uri(host)
    };

    HttpResponseMessage httpResponse = httpClient.GetAsync(path).Result;

    httpResponse.EnsureSuccessStatusCode();

    return await httpResponse.Content.ReadAsStringAsync();
}

0 个答案:

没有答案