何时在 C# 中使用委托,为什么以及它是否在不同的线程上工作

本文关键字:是否 线程 工作 为什么 何时 | 更新日期: 2023-09-27 18:36:44

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

任何答案都值得赞赏。

何时在 C# 中使用委托,为什么以及它是否在不同的线程上工作

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

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

委托不会在不同的线程上调用

该方法,而是在使用委托的代码的同一线程上调用该方法。当在不同的线程上调用方法时,这是因为使用委托的代码已经在不同的线程上运行,或者专门为该方法启动一个新线程。

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

您可以将其用于回调函数、线程等。

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

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