c# - 如何识别方法中的当前线程?

标签 c# asp.net-mvc multithreading

我有一个网站,有一个这样的方法:

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/

相关文章:

c# - 通过 MS Outlook 发送电子邮件并禁用警告

c# - 每秒刷新标签内容 WPF

c# - 从 Controller .Net Core 2.1 调用 Signalr 方法

c# - 如何在通过 FileStream 写入文件时锁定文件?

c# - 如何在并行 block 中正确继承线程文化?

asp.net - ASP.Net 中的请求之间是否重用线程?

c - 为什么用OpenMP生成随机数没有提速?

javascript - 在 C# 代码 MVC .NET 中从 html 中检索 id 元素?

c# - 使用手机时需要从网站推荐手机应用商店链接

C++ 多线程教程