1、无返回值

1.1、

             Task t1 = new Task(() =>
              {
                  Thread.Sleep(3000);
                  MessageBox.Show("111111");
              });
            t1.Start();
            t1.Wait();//等待t1执行完,再执行下面,会阻塞主线程

 

1.2、

    Task t2 = Task.Factory.StartNew(() =>{
                Thread.Sleep(3000);
                MessageBox.Show("222222");
            });

            t2.Wait();//效果同上 t1.Wait();

 

1.3、

   1.3.1
            Task.Run(() =>
            {
                Thread.Sleep(3000);
                MessageBox.Show("33333");
            });

            1.3.2 方法要用async修饰
            await Task.Run(() =>
            {
                Thread.Sleep(3000);
                MessageBox.Show("33333");
            });

 

2、有返回值,注意:有返回值时,执行过程中会阻塞主线程,执行完得到返回值才会向下执行

1.1、

 Task<string> t1 = new Task<string>(() =>
              {
                  Thread.Sleep(3000);
                  return "1111";
              });
            t1.Start();
            MessageBox.Show(t1.Result) ;

 

1.2、

 Task<string> t2 = Task<string>.Factory.StartNew(() =>
            {
                Thread.Sleep(3000);
                return "22222";
            });
            MessageBox.Show(t2.Result);

 

1.3、

string ss =await Task.Run<string>(() =>
            {
                Thread.Sleep(3000);
                return "33333";
            });
            MessageBox.Show(ss);

 

posted on 2020-07-03 09:54  逛园子$$$  阅读(552)  评论(0)    收藏  举报