gpt4 book ai didi

c# - C#中的线程

转载 作者:太空狗 更新时间:2023-10-29 22:10:08 25 4
gpt4 key购买 nike

如何在 C# 中使用线程调用带有两个参数的函数?我必须从另一个函数调用 StartDNIThread(string storeID, string queryObject)。我必须传递这两个值。都是字符串

最佳答案

您的选择是:

  • 将参数封装在一个新类中,并将用于委托(delegate)的方法放入该类中。
  • 使用匿名函数(匿名方法或 lambda 表达式)自动对捕获的变量执行相同的操作。

后者当然通常更容易。你没有显示你在用线程做什么,但你可能会做类似的事情:

string storeID = "...";
string queryObject = "...";

Thread t = new Thread(() => StartDNIThread(storeID, queryObject));
t.Start();

请注意,因为捕获了变量,所以在您知道线程实际启动之前,您不应该更改这些值。您可以使用仅由匿名函数使用的捕获变量来解决此问题:

string storeID = "...";
string queryObject = "...";

string storeIDCopy = storeID;
string queryObjectCopy = queryObject;
Thread t = new Thread(() => StartDNIThread(storeIDCopy, queryObjectCopy));
t.Start();
// You can now change storeID and queryObject freely

如果您在循环中执行任何操作,这一点尤其重要,因为循环变量本身会发生变化。例如:

foreach (string storeID in stores)
{
string storeIDCopy = storeID;
Thread t = new Thread(() => StartDNIThread(storeIDCopy, queryObject));
t.Start();
}

如果您使用线程池或任何其他启动线程的方式,则模式基本相同。

关于c# - C#中的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1379240/

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