我有一个网站,有这样的方法:
public Context GetContext()
{
...
}
当用户登录网站时,将多次调用此方法,该方法将返回一些信息。
现在我有一个由网站启动的其他线程,线程会做一些事情。并且在线程作业中这个方法也会被多次调用。
问题是,在这两种情况下,该方法应返回不同的结果,由于某种原因我不能使用其他方法或向该方法添加参数。
无论如何都要识别方法中的当前线程?基本上,我想存档这样的东西:
var thread = new Thread(GetContext);
thread.SomeFlag = True.
thread.Start()
public Context GetContext()
{
Var thread = GetCurrentThread();
If(thread.SomeFlag == True)
//do some thing...
Else
//do some thing...
}
这可能吗?
答案 0 :(得分:2)
您可以使用ThreadStaticAttribute
为每个帖子单独设置字段的值。您可以在每个线程的开头设置值(您不能在线程外部设置它)并在以下内容中对其进行评估:
[ThreadStatic]
private static bool someFlag;
var thread = new Thread(GetContext);
thread.Start()
public Context GetContext()
{
someFlag = true;
//...
if(someFlag == true)
//do some thing...
else
//do some thing...
}
允许您为每个线程存储任意数据。与线程ID不同,您可以完全控制要存储的数据。