【发布时间】:2012-05-04 14:45:13
【问题描述】:
我目前正在将一个 Windows Phone 7 应用程序转换为它的 Web 应用程序。该应用程序使用一个大的主线程来收集数据,目前我只是在我的 ASP.NET MVC 控制器中按原样复制并粘贴它(只是一个标准线程操作)。
Sync _Sync = new Sync();
_Sync.StartSync();
任务工作正常,但由于线程使用来自 cookie 的全局数据集,因此在使用 2 个不同的用户名访问页面时会出现问题。例如,如果我在 Firefox 中使用“user1”登录,然后尝试使用另一个用户(例如“user2”)登录 Chrome,那么它将自动更改为第一个用户收集的异步数据;这意味着我将始终看到从上次登录的用户中提取的数据(不管我最初是与另一个用户一起登录 Firefox 的事实),而不是彼此的单独数据。
换句话说,线程不会为每个单独的用户单独启动。我该如何解决这种行为?
【问题讨论】:
-
您可以按用户名个性化同步吗?
-
Sync类型是否使用任何static字段或属性来存储用户数据? -
“线程使用 cookie 中的全局数据集”,这对我来说听起来不太好,也许当您创建
Sync对象时,您可以为其分配一个唯一关联的值它给特定用户,而不是使用全局变量。 -
@ChrisShouts 是的,同步所需的所有全局字段都保留在静态对象中。我应该每次都创建一个新实例吗?
-
很遗憾,我无法以这种方式对其进行个性化设置。
标签: c# asp.net .net multithreading asp.net-mvc-3