弹来弹去跑马灯!

c# Task启动带参数和返回值的函数任务

Task有时候相当于Thread的作用

下面的例子test2 是个带参数和返回值的函数。

private int test2(object i){
this.Invoke(new Action(()=>{pictureBox1.Visible=true;}));
System.Threading.Thread.Sleep(3000);
MessageBox.Show("hello:"+ i);
this.Invoke(new Action(()=>{pictureBox1.Visible=false;}));
return 0;
}

//测试调用
private void call(){

//Func<string, string> funcOne = delegate(string s){ return "fff"; };
object i=55;
var t= Task.Factory.StartNew(new Func<object ,int>(test2),i);

}

=下载网站源文件例子========================

HttpClient 引用System.Net.Http

private async Task< int> test2(object i){
this.Invoke(new Action(()=>{pictureBox1.Visible=true;}));

HttpClient client= new HttpClient();
var a= await client.GetAsync("http://www.baidu.com");
Task s= a.Content.ReadAsStringAsync();
MessageBox.Show (s.Result);

//System.Threading.Thread.Sleep(3000);
//MessageBox.Show("hello:"+ i);
this.Invoke(new Action(()=>{pictureBox1.Visible=false;}));
return 0;
}

async private void call(){

//Func<string, string> funcOne = delegate(string s){ return "fff"; };
object i=55;
var t= Task<Task>.Factory.StartNew(new Func<object ,Task>(test2),i);

}

---------------或者---------

private async void test2(){
this.Invoke(new Action(()=>{pictureBox1.Visible=true;}));
HttpClient client= new HttpClient();
var a= await client.GetAsync("http://www.baidu.com");
Task s= a.Content.ReadAsStringAsync();
MessageBox.Show (s.Result);
this.Invoke(new Action(()=>{pictureBox1.Visible=false;}));

}

private void call(){

var t= Task.Run(new Action(test2));

//相当于
//Thread th= new Thread(new ThreadStart(test2));
//th.Start();

}

posted @ 2016-03-03 14:12  wgscd  阅读(31228)  评论(0)    收藏  举报