Desde o Windows 7, um recurso bem interessante de UI é a barra de progresso no ícone da aplicação. Você pode informar o usuário de um processo em andamento sem precisar criar um diálogo a mais para isso.
No .net, temos um pacote que facilita ainda mais as coisas para o programador: o WindowsAPICodePack-Shell.
Na sua aplicação, basta:
Exemplo:
using System;
using System.Threading;
using System.Windows.Forms;
using Microsoft.WindowsAPICodePack.Taskbar;
namespace AppProgressBar
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Normal);
int i = 0;
while (i < 10)
{
TaskbarManager.Instance.SetProgressValue(i, 10);
Thread.Sleep(500);
i++;
}
TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.NoProgress);
}
}
}