C#の同期および非同期呼び出し方法


同期と非同期はみんなどういう意味か分かりますが、ここではあまり紹介しません.
namespace ConsoleTest

{

    class Program

    {

        static void Main(string[] args)

        {

            Console.WriteLine("******** **********");

            int result = Add(1,2);

            Console.WriteLine(" , :" + result);



            Console.WriteLine("******** **********");

            SynAdd(1, 2, (r) => {

                Console.WriteLine(" , :" + r);

            });

            Console.WriteLine("------- !----------");

            Console.ReadLine();

        }



        /// <summary>

        ///  

        /// </summary>

        /// <param name="a"></param>

        /// <param name="b"></param>

        /// <returns></returns>

        static int Add(int a, int b)

        {

            Thread.Sleep(5000);

            return a + b;

        }



        /// <summary>

        ///  

        /// </summary>

        /// <param name="a"></param>

        /// <param name="b"></param>

        /// <param name="callback"> </param>

        static void SynAdd(int a, int b, Action<int> callback)

        {

            Func<int> func = () =>

            {

                Thread.Sleep(5000);

                return a+b;

            };// 

            func.BeginInvoke((ar) =>

            {

                var result = func.EndInvoke(ar);// 

                callback.Invoke(result);// , 

            }, null);

        }

    }

}