Microsoft MVP성태의 닷넷 이야기
비동기 DB 쿼리관련 질문 [링크 복사], [링크+제목 복사],
조회: 18054
글쓴 사람
채동민 (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)
5791PLC1/16/202312061C# - 실시간 5개 룸 모니터링 [15]
5790집으로 ...1/13/202312437[UI 멈춤 현상]deadlock 관련 글을 보고 혹시나 하고 문의 드립니다. [4]
5789guest1/10/202312149스레드와 Async Task [2]파일 다운로드1
5788kr11/10/202312438C# 에서 제공하는 컬렉션들의 차이점이 궁금합니다. [3]
5787stack1/10/202312470STACKOVERFLOW [1]
5786Dev ...1/9/202314727익명 클래스 말고 익명 구조체는 불가능한걸까요? [4]
5785음성인식1/8/202314638음성인식 System.Speech - 문법에 사용된 언어가 음성 인식기의 언어와 일치하지 않습니다. [2]
5784MS워드1/8/202313422MS워드에서 ctrl Z는 클립보드를 이용하나요? 아니면 참조자 이용하나요? [7]
5783구직자1/7/202312292C#개발자 구인광고와 초급개발자 [3]파일 다운로드1
5782Sqli...1/5/202313531윈도우11 노트북에서 exe(Sqlite)만들어 윈도우 7 PC에 설치 시 [5]
5781List맨1/5/202313467List.Add("newobj") 속도는 빠른 편인지요? [11]
5780임세1/3/202315638C# 프로그래밍 10 책 구매한 사람입니다. 3부 자료는 어디서 다운 받을 수 있나요? [4]
5779이건우1/2/202313778안녕하십니까 루프안에서 메세지처리에 관하여 질문드립니다! [2]
5778이건우12/30/202214326안녕하세요 c#에서 dll참조 관련 질문드립니다. [4]
5777감사합니...12/29/202212935UI Thread에 Invoke 처리관련 궁금합니다. [3]
5776pdf맨12/28/202212420C# MouseUp Event + pdf [10]
5775민성12/28/202212838안녕하세요 Class 관련해서 예외처리를 하나로 받아낼수 있는 방법 [1]
5774중급12/27/202214647중급개발자란 어느 수준인지요? [4]
5773김영식12/26/202213297c# 압축파일 읽어 올 때 BinaryRead 한글 처리 문제 [1]
5772눈송이12/26/202213681Excel VSTO 는 왜 Net Core, Net 5, 6 버전을 사용하지 않나요? [2]
5771김훈12/26/202213153c# .net client application 망분리(내부망,외부망) 환경에서 의문의 외부사이트 호출 대기 [2]
5770lsh12/26/202212679클라우디움안에 있는 파일을 File.Copy 하고싶은데 코드로는 접근을 못하나요? [1]
5769울타리12/20/202213534Active Directory 2012R2 2016 또는 2019 마이그렝션 문의 드립니다. [1]
5768c++12/14/202216398Thread를 사용한 C++ DLL에 관련된 질문입니다. [6]파일 다운로드2
5767민성12/9/202213099안녕하세요 ashx로 화일을 저장하고 화일명을 리턴하는데요 [1]
5766김명훈12/9/202212919웹브라우저에서 묻지 않고 바로 다운로드 [2]
1  2  3  4  5  6  7  [8]  9  10  11  12  13  14  15  ...