I have had a bit of success with a progress indicator. This block is called from an event and may be called from multiple threads. it displays 1% and increments as appropriate on one line.
private object thislock = new Object();
void UpdateProgress(DownloadProgressChangedEventArgs e)
{
lock (thislock)
{
for (int i = 0; i < 50; i++)
{
Console.Write("\b");
}
Console.Write(e.ProgressPercentage.ToString() + "%");
}
}