static void Main(string[] args) { int threadHashCode = Thread.CurrentThread.GetHashCode(); Console.WriteLine("Main() in Thread {0}", threadHashCode); Calculator calculator = new Calculator(0); while (true) { char operationSymbol = Prompts.PromptOperationSymbol(); var mathOperation = Calculator.GetOperation(operationSymbol); decimal value = Prompts.PromtDecimalValue(); decimal prevSum = calculator.Sum; string statusMessage = String.Format("{0} {1} {2}", prevSum, operationSymbol, value); CalculatorDelagate delagate = calculator.MakeOperation; delagate.BeginInvoke( mathOperation, value, CalculatorCallback, statusMessage ); } }