C# 在多线程中维护connectioncache id

C# 在多线程中维护connectioncache id,c#,multithreading,C#,Multithreading,这是我的场景: C#winapp前端和cobol作为后端。我们过去常常逐行检查表(例如:m1)中名为“status”的列中的条目“2”,如果找到,则执行一些任务 使用多线程,自动用户将登录并检查表(m1)中的条目2,也就是说,自动用户将在第一次登录3秒后再次登录并执行相同的检查。(如果找到条目,它将执行一些操作。)用户登录和检查将使用多线程每隔3秒执行一次,并重复执行场景,直到应用程序结束 问题来了 一旦用户登录,将为该用户生成一个id并存储在会话缓存中。如上所述,如果在表中找到条目2,则它将通

这是我的场景:

C#winapp前端和cobol作为后端。我们过去常常逐行检查表(例如:m1)中名为“status”的列中的条目“2”,如果找到,则执行一些任务

使用多线程,自动用户将登录并检查表(m1)中的条目2,也就是说,自动用户将在第一次登录3秒后再次登录并执行相同的检查。(如果找到条目,它将执行一些操作。)用户登录和检查将使用多线程每隔3秒执行一次,并重复执行场景,直到应用程序结束

问题来了

一旦用户登录,将为该用户生成一个id并存储在会话缓存中。如上所述,如果在表中找到条目2,则它将通过检索存储在缓存中的id来执行另一项任务。因为多用户日志记录之间的时间间隔为3秒。每个日志的id将存储在缓存中。上一个用户id将替换为下一个用户的id。这会导致检索错误的id

如何避免这个问题?请建议存储id的任何解决方案或替代方法

 namespace connection
{
    public class helper
    {
        public static void SetConnId(int id)
        {
            try
            {
                User backend = ConnectionCache.Backend;
                backend.ConnectionId = id;
            }
            catch { }
        }
        public static int GetConnId()
        {
            try
            {
                return ConnectionCache.Backend.ConnectionId;
            }
            catch { }
            return 0;
        }
      }
}

你的问题很难理解,但如果有一个问题,它与我们不知道的连接缓存如何工作有关;我没有……的代码,谢谢你的回复@rene。如果您100%确定/保证一个用户的所有内容都在您可以使用的同一个线程上,那么您可以建议我一些方法来使用多线程概念存储多个登录的会话/连接id吗。