为什么我要在C#中使用没有回调函数的委托进行异步编程?

为什么我要在C#中使用没有回调函数的委托进行异步编程?,c#,.net,asynchronous,parallel-processing,C#,.net,Asynchronous,Parallel Processing,我对自己的想法是——我们使用带有回调函数的委托来异步完成一些事情。我们分别对参数函数和非参数函数使用Func或Action [如果我错了,请纠正我的错误]但是,我想知道是否存在这样的情况:我不会使用任何回调函数,而只是使用委托以异步方式完成某些事情 编辑: 委托+回调=异步编程 我可以在没有回调的情况下进行异步编程吗?如果可以,那么这些场景是什么 Func和Action是代理。它们是用于一般用途的预定义委托类型。我不知道你在问什么。请看下面关于代理和回调之间的“区别”:由于术语使用不准确,你的问

我对自己的想法是——我们使用带有回调函数的委托来异步完成一些事情。我们分别对参数函数和非参数函数使用Func或Action

[如果我错了,请纠正我的错误]但是,我想知道是否存在这样的情况:我不会使用任何回调函数,而只是使用委托以异步方式完成某些事情

编辑:

委托+回调=异步编程


我可以在没有回调的情况下进行异步编程吗?如果可以,那么这些场景是什么

Func
Action
是代理。它们是用于一般用途的预定义委托类型。我不知道你在问什么。请看下面关于代理和回调之间的“区别”:由于术语使用不准确,你的问题很难理解。但是,听起来您似乎在考虑异步操作,其中传递一个引用回调方法的委托实例,以便在操作完成时可以调用该方法,并询问是否存在不使用该机制的异步操作示例。如果是这样,那么答案就是“当然”;它习惯上被称为“触发并忘记”。还有一些不涉及传递回调委托的异步机制,例如事件异步模型和
async
/
wait
。但在这些情况下,代表仍在使用中;它们的处理方式与传递给发起方法的方式不同,对于后者,甚至在代码中都不显式可见。坦率地说,使用
BeginInvoke
/
EndInvoke
作为示例只会进一步混淆问题。首先,这些方法有多个类:它们存在于委托类型上,也存在于Winforms和WPF API中。其次,这些方法的委托类型版本本身直接用作异步执行操作的方式,并且可能涉及也可能不涉及将回调方法传递给操作作为完成信号的方式(取决于使用情况)。所以,如果你写的都是“BeginInvoke/EndInvoke”,我们无法确定你在说什么上下文。