Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 父线程和子线程是否有任何ThreadStatic属性_C#_Sql Server_Multithreading - Fatal编程技术网

C# 父线程和子线程是否有任何ThreadStatic属性

C# 父线程和子线程是否有任何ThreadStatic属性,c#,sql-server,multithreading,C#,Sql Server,Multithreading,线程和它创建的后台工作线程之间是否有共享值的属性或方法 我正在制作一个SQL Server CLR程序集,在数据库中执行搜索+一些计算,我希望它是多线程的。我需要在调用线程和我创建的后台工作线程之间共享一些数据(从数据库调用线程读取的数据,我希望传递给工作线程,以便他们计算我需要的数据) 我不认为将类对象作为参数发送到RunWorkerAsync是一个好主意,因为在线程内部我使用lock(item);和联锁。添加(参考itemCount,-1);机制 我还需要的是,如果进行了另一个搜索调用,则这

线程和它创建的后台工作线程之间是否有共享值的属性或方法

我正在制作一个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变量。变量被复制了,对吗?因为它们不是指向类的指针。