何时在C#中使用Delegate,为什么并且它在不同的线程上工作?

时间:2012-06-09 17:02:46

标签: c# .net delegates

我知道这个问题已被提出很多问题,但我需要一个答案,以非常实际的方式提出所有问题,最好是代码示例。 我何时应该在C#中使用委托方法? 如何使用它? 我为什么要用它? 它与多线程有什么关系?

感谢任何回答。

3 个答案:

答案 0 :(得分:1)

委托基本上是方法指针。它引用了方法及其对象(当然,除非它是静态方法)。

每当需要调用方法时都使用委托,但调用它的代码不知道它是哪种方法。最常见的原因是调用该方法的代码是在该方法之前进行的,例如,像List<T>.Sort(comparison)这样的库方法。

Delegates不会在不同的线程上调用该方法,它使用委托在与代码相同的线程上调用。当在不同的线程上调用方法时,因为使用委托的代码已经在不同的线程上运行,或者专门为该方法启动新的线程。

答案 1 :(得分:0)

Delegate是一个函数指针,指向C中的任何函数。您可以将delegate作为参数传递给其他函数。

你可以将它用于回调函数,线程等。

有关详细信息,请查看此MSDN链接

答案 2 :(得分:0)

关于多线程Delegate.BeginInvoke用于在后台线程中调用方法。委托还用于将函数引用传递给其他多线程构造,如ThreadPool后台工作程序等。