2011-09-09 9 views
0

데이터베이스 연결을 만들 수 없을 때마다 다시 시도해야하는 코드가 있습니다 (예 : 로그인 할 때마다 20 번). 웹 사이트에는 수십 명의 사용자가 있습니다.이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 나는 카운터를 사용하려고 생각하고 있었지만 동시에 여러 사용자가 동시에 로그온 할 수 있기 때문에 일부 스레딩이 필요할 것입니다. 익숙하지 않습니다.데이터베이스 연결 문제 처리

편집 :

내가 스레드 객체를 인스턴스화하고있는 줄에 오류 '기대 메소드 이름을'얻을. 여기 내 코드는 다음과 같습니다

private static List<Field.Info> FromDatabase(this Int32 _campId) 
    { 
     List<Field.Info> lstFields = new List<Field.Info>(); 

     Field.List.Response response = new Field.List.Ticket 
     { 
      campId = _campId 
     }.Commit(); 

     if (response.status == Field.List.Status.success) 
     { 
      lstFields = response.fields; 
      lock (campIdLock) 
      { 
       loadedCampIds.Add(_campId); 
      } 
     } 

     if (response.status == Field.List.Status.retry) 
     { 
      Thread th1 = new Thread(new ThreadStart(FromDatabase(_campId))); 

      FromDatabase(_campId); 
     } 

     return lstFields; 
    } 
+0

을 사용하여 사용자 별 카운터가 아닌 솔루션입니다? 병렬 로그인을 관리하려면 일반적으로 많은 스레드가 필요합니다. 또는 상태를 일종의 상태 시스템에 유지하려고 할 수 있습니다. – Vlad

답변

0

내 방법은 카운터를 증가 및 카운터 < = 20 그런 다음 내가 현재 스레드를 차단하고 연결 결과를 기다려야한다면 비동기 메도를 호출하는 이벤트가 될 것입니다.

하려면 스레드 안전 증가하여 카운터가

Interlocked.Increment(ref int counter); 
+0

이 작업을 수행하는 방법에 대한 코드 예제를 제공해 주시겠습니까? 전에는 스레딩을 한 번도 해 본 적이 없으며 어디서부터 시작해야할지 모르겠습니다. – user517406

+0

이 예제는 [on msdn] (http://msdn.microsoft.com/de-de/library/dd78zt0c.aspx)에서 찾을 수 있습니다. –

관련 문제