C# 我可以将什么任务附加到任务中?

C# 我可以将什么任务附加到任务中?,c#,concurrency,task-parallel-library,task,async-await,C#,Concurrency,Task Parallel Library,Task,Async Await,我看到了这个代码: [HttpGet] public async Task OperationAsync() { await Task.Delay(2000); } [HttpGet] [Route("api/Deliveries/Count")] public int GetCountOfDeliveryRecords() { return NRBQService.GetNRBQEntity(); } …在技巧7中,我想我会尝试一下。我更改了此代码: [

我看到了这个代码:

[HttpGet]  
public async Task OperationAsync()  
{   
    await Task.Delay(2000);  
}
[HttpGet]
[Route("api/Deliveries/Count")]
public int GetCountOfDeliveryRecords()
{
    return NRBQService.GetNRBQEntity(); 
}
…在技巧7中,我想我会尝试一下。我更改了此代码:

[HttpGet]  
public async Task OperationAsync()  
{   
    await Task.Delay(2000);  
}
[HttpGet]
[Route("api/Deliveries/Count")]
public int GetCountOfDeliveryRecords()
{
    return NRBQService.GetNRBQEntity(); 
}
……为此:

// [HttpGet] unnecessary when method name begins with "Get"
[Route("api/Deliveries/Count")] 
public async Task<int> GetCountOfDeliveryRecords()
{
    return await Task.NRBQService.GetNRBQEntity();
}
当方法名称以“Get”开头时,
/[HttpGet]不需要
[路线(“api/交付/计数”)]
公共异步任务GetCountOfDeliveryRecords()
{
返回wait Task.NRBQService.GetNRBQEntity();
}
…但获取“'System.Threading.Tasks.Task'不包含NRBQService的定义”


那么,我应该怎么做才能让它编译/工作呢?

您只能等待一个
任务或
任务(也可以等待其他任务,但不太可能需要使用)<代码>任务。延迟
是一种异步方法,返回一个
任务
。这样你就可以写:

await Task.Delay(2000);
NRBQService.GetNRBQEntity
是一个返回
int
的方法,因此不能等待。您需要创建一个异步方法,该方法返回
Task
,如下所示:

public async Task<int> NRBQService.GetNRBQEntityAsync()
{
    // ...
}
public异步任务NRBQService.GetNRBQEntityAsync()
{
// ...
}
你可以这样使用它:

[Route("api/Deliveries/Count")] 
public async Task<int> GetCountOfDeliveryRecords()
{
    return await NRBQService.GetNRBQEntity();
}
[路线(“api/交付/计数”)]
公共异步任务GetCountOfDeliveryRecords()
{
return wait NRBQService.GetNRBQEntity();
}

Delay
任务
类上的静态方法<代码>NRBQ服务
不可用。您可能正在寻找的是一个等价于
NRBQService.GetNRBQEntityAsync
return wait Task.Run(()=>NRBQService.GetNRBQEntity())
但是你认为它对你有什么帮助?@EZI:不建议在ASP.NET上使用。你是否有性能问题并试图解决它们?因为这不太可能解决任何问题。一般来说,这个提示应该附带一大堆警告。异步是好的,但它没有做任何神奇的事情——它只是潜在地释放线程。当使用为异步而设计的库时,这通常很有用——通常是对其他web服务的请求,可能是繁重的文件处理。上面的每一个项目都应该有大量的注意事项,足以让每个项目本身成为一篇文章。任何优化工作都需要的第一件事是分析,以找出问题的确切原因。然后努力解除那个障碍。通用的“提示和技巧”可能会导致无意义的微优化。有趣的琐事-方法…和扩展方法很重要!所以从技术上讲,OP可能会等待一个int,这是毫无意义的。@GeorgeMauer-true。这就是为什么每当我说“你只能等待一项任务”时,我觉得有必要添加两段话来解释为什么这不是真的,尽管你应该表现得像是真的。