2010-07-26 8 views
0

비동기 작업 실행에 대해 읽었으며 SQL 명령 실행 측면 (AsynchResult를 기다리는 대기 핸들을 추가하여 SQL 명령을 실행하는 동안 처리됨) 또는 UI 실행 측면에서 수행 할 수 있음을 발견했습니다. http://msdn.microsoft.com/en-US/library/yws6262h%28v=VS.80%29.aspx비동기 작업 실행

UI 측 (SQL 명령 대기 핸들 DELAYFOR 사용)

SQL 측면은 다음과 같은 (이 후 비동기 메소드 호출을 시작하는 방법을 가리키는 대리자를 사용하여 수행된다) http://msdn.microsoft.com/en-US/library/2e08f6yc%28v=VS.80%29.aspx

하지만 성능 및 런타임과 관련하여 어느 것이 더 좋을지 모르겠습니까?

성능 관점에서 차이점을 말해 줄 수 있습니까? 그리고이 기법이나 쓰레드 풀 대기열 기법이 더 나은가?

당신이 SqlCommand 객체에 BeginXXX EndXXX 방법을 의미한다 "SQL 측"로 가정하면 미리

+0

은 u는 'SQL 명령 실행 측면'에 의해 WHT을 의미합니까 명확히? – deostroll

+0

빠른 응답이 필요합니다. – Ahmy

답변

1

감사하고 UI의 의미는 단순히 대표는 비동기 적으로 실행 - 단순히 다른 대 하나를 사용하여 제공하는 성능에 차이가 없습니다 . 두 언어의 성능 차이는 실행하는 코드와 관련해서 만 발생합니다. SQL 측은 명령을 비동기식으로 실행하기 때문에 UI 측에서 사용자가 제공하는 많은 코드가있을 수 있습니다.

많은 경우 SQL 명령보다 높은 수준에서 비동기 작업을 제공하기 만하면됩니다. 한 번에 많은 명령을 시작하려는 데이터 액세스 레이어와 같은 경우에는 SqlCommand 메서드를 사용하는 것이 좋습니다.

바라 건데 그것은 당신이있는 곳 근처에 있습니다.

대리자를 비동기 적으로 실행하면 (Delegate.BeginInvoke) 또는 BeginXXX 메서드는 ThreadPool 스레드를 사용합니다. 스레드 풀 대 대리자를 사용 사이의 차이는 빨리 여기에 설명되어 있습니다 :

http://www.toadz.dk/2010/01/delegate-begininvoke-vs-threadpool-queueuserworkitem/

+0

델리게이트 비동기식 (.BeginInvoke)과 스레드 (QueueUserWorkItem)를 사용하는 스레드 풀링의 차이점은 무엇입니까? – Ahmy

+0

다음은 간단한 설명입니다. http://www.toadz.dk/2010/01/delegate-begininvoke-vs-threadpool-queueuserworkitem/ –

+0

+1에 대한 혁신적인 설명 – Ahmy