2013-11-25 2 views
1

페이지의 데이터베이스에서 증분 된 항목 코드를 생성하는 페이지가 있고이 코드를 공용 공유 변수 배열에 저장하여 다른 클라이언트 페이지가 열리면 데이터베이스에 저장 될 때까지 동일한 코드. 클라이언트 연결이 끊어진 경우 전역 공유 변수가 지워짐

Public Shared gCode() As String 

클라이언트가 내가 변수에서 항목 코드를 제거 캡처 된 데이터를 저장

.

클라이언트가 서버에 연결을 잃어 버렸을 때 어떻게되는지 알고 싶습니다. 변수에서 코드를 제거하는 방법은 무엇입니까? onunload 이벤트를 사용했지만 화재가 발생하지 않았습니다.

더 좋은 방법이 있나요?

어떤 제안은 우리가 그 특정 범위를 가지고 있으며 예에 사용 생성 된 항목 코드가 미리

또한 설명

감사합니다 감사합니다. GPA0741MAN1. GP는 제조업체, A는 카테고리, 0741은 품목 번호, MAN은 제조를 의미하며 1은 제조 번호입니다.

이 코드는 vb의 함수를 사용하여 만듭니다. 페이지는 CreateItem.aspx입니다. 사용자가 새 항목 코드를 만들 때 클릭하면 코드가 작성되어 변수에 저장되지만 DB에 저장되지 않으므로 다른 정보가 필요합니다.

다른 사용자가 첫 번째 저장하기 전에 새 항목 만들기를 클릭하면 동일한 코드가 없습니다.

우리는 항상 서버에 안정적으로 연결되는 것은 아니므로 연결이 끊어 질 수 있습니다. 이로 인해 서버는 변수를 보존하고 결코 그것을 잃지 않습니다.

+0

사용자가 저장을 누를 때까지 코드를 비워 둘 수 있습니까? 그렇지 않은 경우 데이터베이스에 사용자 ID와 날짜가 첨부 된 예약 코드 테이블을 가질 수 있습니다. –

답변

1

서버의 코드가 어쨌든 계속되므로 클라이언트의 연결이 끊어지는 것은 중요하지 않습니다. 클라이언트는 출력을 볼 수 없지만이 경우에는 차이가 없습니다.


다른 (더 표준 어쩌면 더 나은) 방법은 코드에서 중요한 부분을 만들 SyncLock을 사용하는 것입니다. 당신의 방법에서

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

:

SyncLock someLock ' critical section 
    ... 
End SyncLock 

이되지 않을 수 있도록 (다른 스레드에서이 클래스의 모든 인스턴스가 공유하도록) 및 개인 (정적해야 SyncLock에 사용되는 객체 수업 외에서 변경됨).

+0

제 경우에는 클라이언트의 연결이 끊어지는 것이 중요합니다. 클라이언트가 연결을 끊으면 다음 클라이언트가 사용할 수 있도록 변수에서 항목 코드를 가져 오려고합니다. –

+0

글쎄, 모든 경우에 클라이언트 단절을 감지 할 수 없습니다 ... 어쩌면 어떤 종류의 시간 초과가 필요할 것입니다. – Szymon

+0

나는 SyncLock을 완전히 이해하지 못한다.하지만 변수에서 항목 코드를 증가시키지 않고 대신 데이터베이스에서 값을 증가 시키므로 읽은 것에서는 내 문제를 실제로 해결할 수 없다.다른 사용자가 페이지를 열면 중복 코드를 만들지 않는 데이터를 사용자가 저장하기 전에 변수 만 검사로 사용합니다. –

관련 문제