Здравствуйте! Есть программа. Выполняет объемные операции и виснет намертво. Хотелось бы сделать визуализацию работы.
Сделана форма с гифкой который я открываю в начале выполнения закрываю в конце. Но открывающая форма виснет вместе с основной.
Как я понял её каким то образом нужно вызвать асинхронно. Как это можно реализовать с передачей параметра в вызов и потом закрыть её из основной формы?
Набросал базовый пример, как можно что то запустить параллельно с репортами. Сначала создает новое окно для прогресса, потом запускаем задачу. Task.Run отправит задачу в пул потоков. Как задача завершится, закрываем окно с прогрессом.
class MyForm : Form
{
public MyForm()
{
var b = new Button();
b.Click+=RunTask;
b.Text = "Click Me";
this.Controls.Add(b);
}
private async void RunTask(object sender, EventArgs e)
{
var progress = new Progress<int>();
var progressWindow = new Form();
var progressBar = new ProgressBar();
progressWindow.Controls.Add(progressBar);
progress.ProgressChanged+= (s, v) => progressBar.Value = v;
progressWindow.Show();
await Task.Run(() =>
{
RunSomethingBig(progress);
});
progressWindow.Close();
}
private void RunSomethingBig(IProgress<int> progress)
{
for (var i = 0; i <= 100; i += 10)
{
progress.Report(i);
Thread.Sleep(1000);
}
}
}
Thread thread; //создаем поток
public void Form1()
{
thread = new thread(gif);
thread.start
}
public void gif()
{
//загружаешь гифку
thread.Abort();
}
А еще можно сделать через backgroundWorker.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как создать url кнопку под сообщением бота?
Допустим есть чисто прикладная задача: сортировка пузырьком в трехмерном массиве
Как можно сделать всплывающие окна? Например, дойдя до конца уровня, игра должна остановится, и в центре должно всплыть окно, мол: " Вы завершили...
Скажите пожалуйста, почему обнуляются все переменные класса CircleFigure?