Microsoft MVP성태의 닷넷 이야기
비동기 DB 쿼리관련 질문 [링크 복사], [링크+제목 복사],
조회: 15168
글쓴 사람
채동민 (dm72.chae at samsung.com)
홈페이지
첨부 파일
 

늘 빠른 답변에 감사드립니다.

현재 사이트 사정상 클라이언트측 inactivity timeout을 10초로 변경해 두었는데 그런 상태에서 수백만건의 데이터를 쿼리할 경우에
(Quotas 상의 제약을 지켜도) 실제DB에서 데이터를 가져오는 동안 블러킹 되어서 인지 WCF채널이 faulted(inactivty timeout때문) 상태가
되는 듯(?) 합니다.

그래서 서비스 쪽에서 아래와 같이 비동기적으로 처리하도록 해보았는데 여전히 채널에서 문제를 발생시키더군요.
아시다시피 하나의 서비스 함수내 에서 결과를 리턴 해주고자 이벤트 방식보다는 폴링방식으로 시도해 보았는데 여전히 채널이 망가집니다.

sleep(0)를 주는 대신에 WCF 채널이 비활성되지 않도록 서비스쪽에서 취할수 있는 다른 방법이 없을까요?
제어권만 놓아주면 WCF 채널이 유지될 것으로 추측해 보았는데 그건 아닌듯하군요.

DAC
{
   List<AlarmMessageHistoryT> logs = new List<AlarmMessageHistoryT>();
   SqlDataReader reader = agent.asyncExecuteReader(query);
   while (reader.Read())
   {
      AlarmMessageHistoryT item = new AlarmMessageHistoryT();
      fromReader(item, reader);
      logs.Add(item);
   }
   return logs;
}


public SqlDataReader asyncExecuteReader(string strQuery)
{
  CreateConnection();
  SqlDataReader reader = null;
  try
  {
    SqlCommand cmd = new SqlCommand(strQuery, _connection);
    ...    
    _connection.Open();
    IAsyncResult ar = cmd.BeginExecuteReader(CommandBehavior.CloseConnection);
    while (!ar.IsCompleted)
    {
      System.Threading.Thread.Sleep(0);
      //System.Windows.Forms.Application.DoEvents();
    }
    reader = cmd.EndExecuteReader(ar);
    ...
  }
  catch (Exception ex)
  {
  }
  finally
  {
    CloseConnection();
  }
  return reader;
}








[최초 등록일: ]
[최종 수정일: 6/10/2010]


비밀번호

댓글 작성자
 




1  2  3  4  5  6  7  8  9  10  11  12  13  [14]  15  ...
NoWriterDateCnt.TitleFile(s)
5623한예지 donator3/15/202211095인터프리터 원리가 궁금합니다. [4]
5622김민아3/8/202211280const와 readonly의 명확한 차이가 이게 맞나요? [2]
5621장성욱3/8/202211347c# 로그 관련 질문 [1]
5620김민아3/7/202210922안녕하세요 비관리 객체를 반환하는 메소드 호출 시 궁금한 점이 있어서 질문드립니다 [2]
5619팡팡이3/3/202212750RSA 문의드립니다. [3]
5618김기헌3/2/202210829안녕하세요 생성자 옆에 this 키워드를 붙여 생성자를 여러 개 호출 시 질문드립니다 [2]
5617Edun2/25/202211494ArgumentOutOrRangeException에러 발생 [2]파일 다운로드1
5616csha...2/24/202210883readonly struct로 선언된 구조체를 특정 클래스에서 멤버변수로 가지는 경우 [1]
5615장성욱2/22/202214330SetThreadAffinityMask를 이용한 쓰레드 지정하는 방법에 대해 궁금합니다. [4]
5614민우2/22/202213540SSL 통신 문의 [6]
5613김인태2/22/202211810서버와 PC 간의 어플리케이션 성능 차이 [1]
5612팬입니다2/20/202210836Kastrel 서버 관련 [1]
5611차가워2/19/202211018stopWatch 늘어짐 문의 [3]
5610차가워2/18/202210861Stopwatch 늘어짐 문제 [1]
5609cs린이2/15/202211059c# 함수의 호출 방식에 대해 궁금합니다! [2]
5608지호2/10/202211902시작하세요 C# 8.0 중 제네릭타입의 IEnumerable [3]파일 다운로드1
5607이로운2/10/202210544안녕하세요. 궁금한게 있어서 질문드립니다. [1]
5605강성봉2/10/202211013TCP PSH flag 패킷 수신 에러 [1]
5604LW2/9/202211802VISUAL STUDIO 2019 ==> 2020 설치시 오류가 생겨서 문의드립니다. [3]
5603김진명2/9/202212917C# 10.0 출간은 언제쯤 계획하고 계신가요? [1]
5602신갑영2/8/202211385윈폼에 대해서 질문 드립니다. [1]
5601김인태2/4/202211486setup project 관련 [7]
5600itkim2/3/202213293윈도우 서버 계정 패스워드 인증 문의 [5]
5599레드골드2/3/202213670c#으로 ms word 제어 가능할까요? [6]
5598jaew...2/2/202211871Dictionary는 참조형식인가요?? [1]
5597재원2/2/202212388c# 9.0에 대한 내용을 받을 수 있나요? [1]
1  2  3  4  5  6  7  8  9  10  11  12  13  [14]  15  ...