我有一个网站,有一个这样的方法:
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...
}
这可能吗?
最佳答案
您可以使用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 不同,您可以完全控制要存储的数据。
关于c# - 如何识别方法中的当前线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46294171/