相关疑难解决方法(0)

C#5异步/等待 - 是*并发*?

我一直在考虑C#5中新的异步内容,并提出了一个特别的问题.

我知道await关键字是一个简洁的编译器技巧/语法糖来实现连续传递,其中方法的其余部分被分解为Task对象并排队以按顺序运行,但是控制返回到调用方法.

我的问题是,我听说目前这一切都在一个线程上.这是否意味着这种异步内容实际上只是将连续代码转换为Task对象然后Application.DoEvents()在每个任务完成之后调用,然后再开始下一个任务?

或者我错过了什么?(问题的这一部分是修辞 - 我完全清楚我错过了什么 :))

c# continuations async-await

57
推荐指数
2
解决办法
9075
查看次数

C#async/await for I/O-Bound vs CPU-Bound操作

我正在学习C#中的异步编程.在文章中,我发现,对于IO绑定操作,你不应该使用Task.Run(),但我不知道如何创建无Task.Run()任务......比如我想创建一个名为自定义方法GetPageCountAsync,查询数据库并返回结果.我有方法GetPageCount已经查询数据库同步.我不知道比以下更好的方式:

private async Task<int> GetPageCountAsync()
{
  return await Task.Run(() => GetPageCount());
}
Run Code Online (Sandbox Code Playgroud)

没有Task.Run怎么做?我找到了SqlCommand类的ExecuteReaderAsync方法,但我想知道这个方法是如何实现的?没有Task.Run?如果是这样,怎么样?

c# io cpu asynchronous async-await

4
推荐指数
2
解决办法
2118
查看次数

标签 统计

async-await ×2

c# ×2

asynchronous ×1

continuations ×1

cpu ×1

io ×1