gpt4 book ai didi

.net - 为什么必须有一个委托(delegate)来桥接线程及其方法?

转载 作者:行者123 更新时间:2023-12-03 13:15:06 24 4
gpt4 key购买 nike

下面的代码很常见:

Work w = new Work();
w.Data = 42;
threadDelegate = new ThreadStart(w.DoMoreWork);
newThread = new Thread(threadDelegate);
newThread.Start();

我只是想知道,为什么必须有一个委托(delegate)到 在该线程上执行的线程和方法?

我们可以直接将方法名称发送到 Thread 吗?

最佳答案

Could we just send the method name to the Thread directly?



作为字符串?万维网。如果不是作为字符串,您将如何建议告诉线程要执行什么?委托(delegate)是在 .NET 中表示“使用特定签名执行的东西”的惯用方式。

请注意,您不需要使用 new ThreadStart或使用单独的变量。使用方法组转换可以正常工作:
newThread = new Thread(w.DoMoreWork);
newThread.Start();

或者,如果您不需要所有这些变量:
new Thread(new Work { Data = 42 }.DoWork).Start();

编辑:请注意,从 .NET 4 开始,使用 Task Parallel Library 通常是一个更好的主意。对于这种事情。

关于.net - 为什么必须有一个委托(delegate)来桥接线程及其方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10230549/

24 4 0
文章推荐: c# - 关于在 Thread 中传递的局部变量
文章推荐: multithreading - Guava ListenableFuture 如何等待来自堆栈的信息?