Включить GIF во время выполнения кода WinForms C#

262
24 августа 2017, 18:35

Уверен, что ответ прост, но все же. Есть код:

private void metroButton1_Click(object sender, EventArgs e)
{
    pictureBox_loader.Show();
    login.Text = (Authorization.Auth()) ? "Успех" : "Провал";
    pictureBox_loader.Hide();
}

Суть в том, что картинка (это гифка) подвисает во время выполнения авторизации, оно в целом логично, т.к. поток занят. Как мне запустить гифку в другом потоке, чтобы она анимировалась пока выполняется код авторизации?

Запуск авторизации в отдельном потоке (гифка все равно виснет):

private void authThread()
{
    this.login.BeginInvoke((MethodInvoker)(() => {
        login.Text = (Authorization.Auth()) ? "Успех" : "Провал";
        pictureBox_loader.Hide();
    }));
}
private void metroButton1_Click(object sender, EventArgs e)
{
    pictureBox_loader.Show();
    new Thread(new ThreadStart(authThread)).Start();
}
Answer 1

Нет смысла в отдельном потоке просто запускать задачу на UI поток. Попробуйте для начала выполнить аутентификацию, потом запускать задачу.

private void authThread()
{
    var auth = Authorization.Auth(); // это в отдельном потоке
    this.login.BeginInvoke((MethodInvoker)(() => {
        login.Text = auth ? "Успех" : "Провал"; // это уже в UI
        pictureBox_loader.Hide();
    }));
}
private void metroButton1_Click(object sender, EventArgs e)
{
    pictureBox_loader.Show();
    new Thread(new ThreadStart(authThread)).Start();
}
READ ALSO
Phantomjs медленно работает на windows 7

Phantomjs медленно работает на windows 7

Проблема следующая, использую phantomjs для выполнение рутинных задач для сайта https://teasernetcom/, код написан на c#

223
Сохранение видео файла в фоновом режиме приложения UWP

Сохранение видео файла в фоновом режиме приложения UWP

ЗдравствуйтеЕсть простой видеоредактор, сохранение видео в файл реализовано в фоновом режиме, реализация по документации https://docs

218