我目前正在将Windows Phone 7应用程序转换为其Web对应应用程序。应用程序使用一个从中收集数据的大主线程,目前我刚刚在我的ASP.NET MVC控制器中复制并粘贴它(只是一个标准的线程操作)。
Sync _Sync = new Sync();
_Sync.StartSync();
任务正常,但由于线程使用了Cookie中的全局数据集,因此在访问具有2个不同用户名的页面时会出现问题。例如,如果我在Firefox中使用“user1”登录,然后尝试使用其他用户(例如“user2”)登录Chrome,则会自动更改为第一个用户收集的异步数据;这意味着我将始终看到从登录的最后一个用户中提取的数据(无论我最初是否与其他用户一起登录过Firefox),而不是彼此的单独数据。
换句话说,线程不会为每个用户单独启动。我怎么能解决这个问题?
答案 0 :(得分:3)
Static
字段和属性在线程间共享,通常不应用于存储与特定用户或Web请求相关的数据。
以下建议之一应修复您的线程问题并将您的用户数据分开。
Sync
类的实例,并从类中删除所有static
字段/属性。Sync
类添加一个方法,该方法返回特定用户的数据实例,而不是将数据存储在static
字段/属性中。