全局共享变量清除客户端连接丢失

时间:2013-11-25 09:42:45

标签: asp.net vb.net

我有一个页面在页面加载时从数据库创建递增的项目代码,并将该代码保存在公共共享变量数组中,这样当打开另一个客户端页面时,它们不会使用相同的代码,直到它保存在数据库中。

Public Shared gCode() As String

当客户端保存捕获的数据时,我会从变量中删除项目代码。

我想知道如果客户端失去与服务器的连接会发生什么,我将如何从变量中删除代码。我尝试使用onunload事件但它似乎没有触发。

有更好的方法吗?

任何建议赞赏

提前致谢

进一步说明

我有一个我们创建的Item代码,它具有特定的范围和用途,例如。 GPA0741MAN1。 GP是制造商,A是类别,0741是项目编号,MAN表示它是制造,1是制造编号。

我使用vb中的函数创建此代码。该页面是CreateItem.aspx。当用户点击创建新项目代码时,代码将被创建并保存在变量中,但不会保存在数据库中,因为还有其他信息需要加盖。

如果另一个用户点击了创建新项目,那么在第一个用户保存之前就不会有相同的代码。

问题在于我们并不总是与服务器建立稳定的连接,并且连接可能会丢失。这会导致服务器保留变量并且永远不会丢失它

1 个答案:

答案 0 :(得分:1)

客户端失去连接并不重要,因为服务器上的代码无论如何都会继续。客户端永远不会看到输出,但在这种情况下,它没有什么区别。


使用SyncLock在代码中创建关键部分的方式不同(可能更好,更标准)。

Private Shared someLock as Object = New Object() ' define the lock variable on the class

在你的方法中:

SyncLock someLock ' critical section
    ...
End SyncLock

SyncLock中使用的对象应该是静态的(以便不同线程上的此类的所有实例共享它)和私有(以便它不能在类之外更改)。