C# 父线程和子线程是否有任何ThreadStatic属性
线程和它创建的后台工作线程之间是否有共享值的属性或方法 我正在制作一个SQL Server CLR程序集,在数据库中执行搜索+一些计算,我希望它是多线程的。我需要在调用线程和我创建的后台工作线程之间共享一些数据(从数据库调用线程读取的数据,我希望传递给工作线程,以便他们计算我需要的数据) 我不认为将类对象作为参数发送到RunWorkerAsync是一个好主意,因为在线程内部我使用lock(item);和联锁。添加(参考itemCount,-1);机制 我还需要的是,如果进行了另一个搜索调用,则这两个调用堆栈中的值不会混淆C# 父线程和子线程是否有任何ThreadStatic属性,c#,sql-server,multithreading,C#,Sql Server,Multithreading,线程和它创建的后台工作线程之间是否有共享值的属性或方法 我正在制作一个SQL Server CLR程序集,在数据库中执行搜索+一些计算,我希望它是多线程的。我需要在调用线程和我创建的后台工作线程之间共享一些数据(从数据库调用线程读取的数据,我希望传递给工作线程,以便他们计算我需要的数据) 我不认为将类对象作为参数发送到RunWorkerAsync是一个好主意,因为在线程内部我使用lock(item);和联锁。添加(参考itemCount,-1);机制 我还需要的是,如果进行了另一个搜索调用,则这
谢谢大家! >不使用像你想要的线程静态变量,你可以考虑将整数传递为一个参数,而不是将它传递给原始对象,而是将它包在一个HORD对象中。
class ResultHolder
{
public int result;
}
然后可以使用该对象通过引用保存int
Thread t = new Thread(Run);
var holder = new ResultHolder() { result = 0x92 }
t.Start(holder);
// Query the result
Console.WriteLine(holder.result);
<>而不是使用像您所希望的线程静态变量,您可以考虑将整数传递为参数,而不是将其传递为原始数据,将其包在保持器对象中。
class ResultHolder
{
public int result;
}
然后可以使用该对象通过引用保存int
Thread t = new Thread(Run);
var holder = new ResultHolder() { result = 0x92 }
t.Start(holder);
// Query the result
Console.WriteLine(holder.result);
你能再解释一下为什么你认为向线程传递一个参数是个坏主意吗?同时提供一些代码。这通常会引起更多的兴趣。问题是我需要传递一个Int变量。变量被复制了,对吗?因为它们不是指向类的指针。你能再解释一下为什么你认为向线程传递参数是个坏主意吗?同时提供一些代码。这通常会引起更多的兴趣。问题是我需要传递一个Int变量。变量被复制了,对吗?因为它们不是指向类的指针。