62,040
社区成员
发帖
与我相关
我的任务
分享
public class HomeController : Controller
{
public async Task<JsonResult> IndexData1()
{
var Data = new {
status = 100,
html =await new BusinessLayer().GetCSDNData_1()
//html =await new BusinessLayer().GetCSDNData_2() //这里的GetCSDNData_1、GetCSDNData_2使用哪种更合理?
};
return Json(Data);
}
public async Task<int> IndexData2()
{
//这里直接在mvc的action中使用Task.Run产生后台线程,这样合理吗?
var taskData =Task.Run<int>(() =>
{
return 100;//假设这里有一个比较耗时的操作
});
return await taskData;
}
}
public class BusinessLayer
{
/// <summary>
/// 在这里不使用async,不会产生后台线程
/// </summary>
/// <returns></returns>
public Task<string> GetCSDNData_1()
{
var url = $"https://www.csdn.net/";
var html = new Tools().GetWebTest(url);
return html;
}
/// <summary>
/// 在await后,产生后台线程
/// </summary>
/// <returns></returns>
public async Task<string> GetCSDNData_2()
{
var url = $"https://www.csdn.net/";
var html =await new Tools().GetWebTest(url);
return html;
}
}
public class Tools
{
public async Task<string> GetWebTest(string url)
{
WebClient client = new WebClient();
var html=await client.DownloadStringTaskAsync(url);
return html;
}
}
private async void button1_Click(object sender, EventArgs e)
{
string r = await GetWebTest("https://www.baidu.com/");
MessageBox.Show(r);
}
public async Task<string> GetWebTest(string url)
{
WebClient client = new WebClient();
var html = await client.DownloadStringTaskAsync(url);
return html;
}