gpt4 book ai didi

c# - 如何在 C# 中向线程添加函数?

转载 作者:太空宇宙 更新时间:2023-11-03 14:39:11 24 4
gpt4 key购买 nike

我想从原始数据导出图片。由于数据的大小,我想将计算分成 4 个线程。具体:它计算平行的4张图片。所以每个线程都要得到一系列的函数来计算。目前我只发现了如何用一个新函数启动一个线程。但不是正在运行的线程如何添加另一个功能。

Thread myThread = new Thread(new ThreadStart( () => createSomething(dt, start, finish)));
myThread.Start();

我的期望:

myThread.add(new ThreadStart2( () => createSomethingelse(dt, start, finish)));

最佳答案

线程自己执行代码,因此如果您想向线程添加更多功能,您通常需要某种方式让代码执行轮询以完成额外的工作。

如果您愿意直接使用 C# Task 而不是 Thread 对象,可以通过 Task.ContinueWith 链接这些对象, 即

var myTask = Task.Run(() => createSomething(dt, start, finish));
var myTask = myTask.ContinueWith(previous => createSomethingelse(dt, start, finish));

请注意,一旦您调用 Run,执行可能会立即开始,但这取决于线程池中的线程。

ContinueWith 的所有重载都需要将前面的 Task 作为参数的函数,但您可以很容易地使用扩展方法覆盖它:

public static Task ContinueWith(this Task task, Action continuation) => 
task.ContinueWith(_ => continuation());

关于c# - 如何在 C# 中向线程添加函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58238810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com