关于.Net中的委托,`AsyncCallback`和`@ object`的目的是什么?

时间:2012-04-20 14:07:03

标签: c# .net asynchronous delegates

我知道在C#(和VB.Net)中我可以创建一个委托,指向一个方法,然后使用这个委托同步或异步地运行我的方法。我知道怎么做。

有时我使用委托来异步运行方法,有时这些方法有输入参数。要异步运行我的方法,我调用委托BeginInvoke方法,提供输入参数,然后是“null,null”。

我提供“null,null”作为最后两个参数,尽管Visual Studio的intellisense建议我提供一个名为callback的AsyncCallback对象,然后是一个名为@object的第二个对象,如下所示。 / p>

Picture

什么是AsyncCallback以及它是如何使用的,以及intellisense建议的另一个名为@object的对象的目的是什么?

由于

2 个答案:

答案 0 :(得分:7)

AsyncCallback是一个委托类型,充当回调函数。

如果您将函数作为此参数传递,.Net将在委托异步执行完成后调用您的回调。

第二个参数允许您将状态传递给AsyncCallback,以便您的回调函数可以知道它的来源。

答案 1 :(得分:1)

基本上AsyncCallback用于处理异步操作的结果。并且state用于能够在异步和非异步环境(异步和非异步函数)之间传递对象

一个很好的例子是Using an AsyncCallback Delegate to End an Asynchronous Operation,其中进行异步调用以获取Dns信息(因此未定义的术语操作执行和处理)

希望这有帮助。