【发布时间】:2015-06-03 04:52:50
【问题描述】:
异步编程是一种在后台调用长时间运行的方法以使 UI 线程保持响应的技术。它应该在调用 Web 服务或数据库查询或任何 I/O 绑定操作时使用。当异步方法完成时,它会将结果返回给主线程。这样,程序的主线程就不必等待 I/O 绑定操作的结果,而是继续执行进一步的操作,而不会阻塞/冻结 UI。没关系。
据我所知,异步方法在后台工作线程上执行。运行时使线程池中的线程可用,或者它可以创建一个全新的线程来执行它。
但我在许多帖子中读到异步操作可以在单独的线程上执行或不使用任何线程执行。现在我很困惑。
1) 您能否帮助澄清一下异步操作在什么情况下不使用线程?
2) 处理器内核在异步操作中的作用是什么?
3) 它与多线程有何不同?我知道多线程对计算绑定操作很有用。
请帮忙。
【问题讨论】:
-
C#中有多种异步方式——你是指异步编程模型(或
Begin/End风格),基于事件的异步模式(完成EventHandlers),还是任务异步模式(async/await/Task风格)? -
嗨,Jeffrey,在所有情况下 - APM、EAP 和 TAP。我在某处读到 EAP 使用后台线程。
-
但是 TAP 可能使用也可能不使用线程池线程。
-
感谢 Jeffery...您的博文对我帮助很大。谢谢。
标签: c# multithreading asynchronous