创建task任务对象
异步对象 如果直接使用全局变量,在task外面使用全局的时候这个全局还是初始值,不是此处赋值的值,原因此处代码是属于异步的下面Console.WinteLine(a);执行在a=10的前面
Task t = new Task(() =>
{
a = 10;
});
t.Start();// 开启任务
Console.WriteLine(a);
public Task<string> F1()
{
Task<string> t1 = Task.Run(() =>
{
string s1 = "150多万寸头渔民赶赴黄岩岛,备注不会撒网,装满搬砖";
return s1;
});
return t1;
}
添加一个按钮点击的事件
private async void button1_Click(object sender, EventArgs e)
string s1 = await F1();
Console.WriteLine(s1);
异步任务里面数据怎么放到外面去使用? 例如Task的异步回调里面的数据怎么使用?
1 不能直接把异步任务里面的数据定义成全局的
2 把异步任务里面的数据通过trturn返回出去,但是使用异步任务的时候,在异步任务的前面添加await关键字,在函数前面添加async
await等待t2异步任务执行完了再去执行下面代码
async 异步任务
Task<int> t2 = Task.Run(() =>
{
int aa = 10000;
return aa;
});
int aaa = await t2;
Console.WriteLine(aaa);
string s =await HttpGetASync("https://www.kuaikanmanhua.com//v2/pweb/rank_type_list");
Console.WriteLine(s);
把封装请求方法封装在异步函数中,
private Task<string> HttpGetASync(string url)
{
Task<string> t = Task.Run(() =>
{
WebRequest request = WebRequest.Create(url);
request.Method = "GET";
WebResponse response = request.GetResponse();
Stream st= response.GetResponseStream();
StreamReader sr = new StreamReader(st);
string data = sr.ReadToEnd();
st.Close();
sr.Close();
return data;
});
return t;
}
点击按钮运行结果为