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);
浙公网安备 33010602011771号