您好我有一个问题:分配为异步任务方法会自动创建一个新任务,然后将方法内的代码运行到刚刚创建的新任务中吗?例如,我只想说我有一个帖子像这样的webapi2中的方法:
public async Task<IHttpActionResult> Post([FromBody]Menu m)
{
using (MySqlConnection con = new MySqlConnection(""))
using (MySqlCommand cmd = new MySqlCommand("Insert into Menu (Description,LanguageId,IsActive) values (@Description,@LanguageId,@IsActive) ", con))
{
try
{
if (con.State == ConnectionState.Closed)
{
await con.OpenAsync();
cmd.Parameters.AddWithValue("@Description", m.Description);
cmd.Parameters.AddWithValue("@LanguageId", m.LanguageId);
cmd.Parameters.AddWithValue("@IsActive", m.IsActive);
await cmd.ExecuteNonQueryAsync();
}
}
catch (MySqlException ex)
{
return Content(HttpStatusCode.NotFound,ex);
}
finally
{
await con.CloseAsync();
}
return Ok("Inserted Succesfully");
}
}
我会在我的应用程序中使用HttpClient将此方法称为等待。我应该使用
Task.Run( () =>
{
//database code
});
在post方法内启动任务,或者一旦方法被分配为Task,任务就会自动启动任务?我只想更好地理解异步方法。谢谢!
答案 0 :(得分:2)
我是否应该使用
Task.Run
在post方法中启动任务,或者在方法分配为任务后立即自动启动任务?
在async
方法中,async
关键字控制为您创建Task对象。您无需再创建另一个。