public class ThreadWithState
private string boilerplate;
private ExampleCallback callback;
public ThreadWithState(string text, int number, ExampleCallback callbackDelegate)
callback = callbackDelegate;
Console.WriteLine(boilerplate, numberValue);
public delegate void ExampleCallback(int lineCount);
public static void Main()
ThreadWithState tws = new ThreadWithState("This report displays the number {0}.", 42, new ExampleCallback(ResultCallback));
Thread t = new Thread(new ThreadStart(tws.ThreadProc));
Console.WriteLine("Main thread does some work, then waits.");
Console.WriteLine("Independent task has completed; main thread ends.");
public static void ResultCallback(int lineCount)
Console.WriteLine("Independent task printed {0} lines.", lineCount);