2

我目前正在将一个 Windows Phone 7 应用程序转换为它的 Web 应用程序。该应用程序使用一个大的主线程来收集数据,目前我只是在我的 ASP.NET MVC 控制器中按原样复制并粘贴它(只是一个标准线程操作)。

Sync _Sync = new Sync();
_Sync.StartSync();

任务工作正常,但由于线程使用来自 cookie 的全局数据集,因此在使用 2 个不同的用户名访问页面时会出现问题。例如,如果我在 Firefox 中使用“user1”登录,然后尝试使用另一个用户(例如“user2”)登录 Chrome,那么它将自动更改为第一个用户收集的异步数据;这意味着我将始终看到从上次登录的用户中提取的数据(不管我最初是与另一个用户一起登录 Firefox 的事实),而不是彼此的单独数据。

换句话说,线程不会为每个单独的用户单独启动。我该如何解决这种行为?

4

1 回答 1

3

Static字段和属性在线程之间共享,通常不应用于存储与特定用户或 Web 请求相关的数据。

以下建议之一应该可以解决您的线程问题并将您的用户数据分开。

  • Sync为每个请求创建一个类的实例,并从类中删除任何static字段/属性。
  • 向类添加一个方法,该方法Sync返回特定用户的数据实例,而不是将数据存储在static字段/属性中。
于 2012-05-04T15:12:44.810 回答