none
C#基础——连续任务问题 RRS feed

  • 问题

  • using System;
    using System.Text;
    using System.Threading.Tasks;

    namespace 连续任务问题
    {
        class Program
        {
            static void Main(string[] args)
            {
                var t1 = new Task<int>(First,5);
                var t2=t1.ContinueWith          //t2要把t1的结果作为参数,这里怎么写??
                var t3=t1.ContinueWith          //同上,怎么写??
            }

            static int First(object o)
            {
                int x = (int)o;
                return x * 2;
            }

            static int First1(int x)
            {
                //接受First的结果并求平方
                return x * x;
            }

            static int First2(int x)
            {
                //接受First的结果并求立方
                return x * x * x;
            }
        }
    }
    2012年5月16日 12:51

答案

  • 自己解决了。。

    using System;
    using System.Text;
    using System.Threading.Tasks;

    namespace 连续任务问题
    {
        class result
        {
            public int number{set;get;}
        }
        class Program
        {
            static void Main(string[] args)
            {
                var result=new result{number =4};
                var t1 = new Task(First,result);
                var t2=t1.ContinueWith<int>(First1);
                var t3 = t1.ContinueWith<int>(First2);
                t1.Start();
                Console.WriteLine(t2.Result);
                Console.WriteLine(t3.Result);
                Console.ReadKey();
            }

            static void First(object o)
            {
                result x = (result)o;
                x.number  *= 2;
            }

            static int First1(Task o)
            {
                result x=(result)o.AsyncState;
                return x.number * x.number ;
            }

            static int First2(Task o)
            {
                result x = (result)o.AsyncState;
                return x.number * x.number * x.number;
            }

        }
    }

    2012年5月16日 13:03