我知道这个问题已经被问了很多,但是我需要一个非常实用的方式来回答我所问的所有问题,最好是使用代码示例。什么时候应该在 C# 中使用委托方法?如何使用它?我为什么要使用它?它与多线程有什么关系?
任何答案表示赞赏。
委托基本上是一个方法指针。它具有对该方法及其对象的引用(当然,除非它是静态方法)。
每当您需要调用一个方法但调用它的代码不知道它是哪个方法时,您都可以使用委托。最常见的原因是调用该方法的代码是在该方法之前编写的,例如像List<T>.Sort(comparison)
.
委托不会在不同的线程上调用该方法,而是在与使用委托的代码相同的线程上调用该方法。当在不同的线程上调用方法时,这是因为使用委托的代码已经在不同的线程上运行,或者专门为该方法启动了一个新线程。
关于多线程 Delegate.BeginInvoke 用于在后台线程中调用方法。委托还用于将函数引用传递给其他多线程结构,如 ThreadPool 后台工作程序等。