我需要将每个线程的变量“counter”保密。
我试图使用:
object locker = new object();
private object locker = new object();
private static readonly object locker = new object();
但它们都不起作用。
我还有其他方法可以解决这个问题吗?
这是我的代码。
public partial class Form1 : Form
{
int counter = 0;
private static readonly object locker = new object();
public Form1()
{
InitializeComponent();
Task t1 = new Task(() =>
{
func();
});
Task t2 = new Task(() =>
{
func();
});
// two threads
t1.Start();
t2.Start();
}
void func()
{
lock (locker)
{
counter++;
Console.Write(counter + " "); // prints "1 2"
// it should print "1 1"
}
}
}
答案 0 :(得分:3)
查看此链接https://msdn.microsoft.com/en-us/library/system.threading.thread.priority(v=vs.110).aspx
[ThreadStatic]
static long threadCount = 0;
我认为这会对你有帮助。