another example
//showing progress using callback delegate
delegate void Mydelegate(string message);
Mydelegate delUpdateMessage;
void Main()
{
delUpdateMessage = new Mydelegate(Print);
//Thread td = new Thread(new ParameterizedThreadStart(DoWork));
//td.Start(delUpdateMessage);
//or
Task.Run(() => DoWork(delUpdateMessage));
}
public void DoWork(object callback)
{
var delCallback = (Mydelegate)callback;
for (int i = 1; i <= 10; i++)
{
Thread.Sleep(1000);
delCallback((i * 10).ToString());
}
}
void Print(string message)
{
Console.Write(message+"% ");
}