2010-02-04 5 views
3

내 코드가 백그라운드 작업자를 사용하는 네트워크 또는 데이터베이스와 통신해야 할 때마다 너무 많이 사용할 수 있습니까? 이러한 작업을 수행하는 올바른 방법은 무엇입니까?너무 많은 백그라운드 작업자 스레드를 사용할 수 있습니까?

백그라운드 작업자를 사용하지 않으면 원격 호스트가 다운되면 GUI가 잠기므로 백그라운드 워커를 사용하는 것이이 문제를 해결하는 유일한 방법입니다.

나는 스스로 가르치기 때문에 내가 따라갈 때 배운다. 모든 사람에게 감사한다.

답변

1

예, 너무 많이 사용할 수 있습니다. BackgroundWorker는 스레드 풀의 스레드를 사용하므로 너무 많이 (동시에) 시작하면 스레드 풀이 고갈됩니다.

배경 작업자는 장기간 실행되는 작업을위한 것이지, 때때로 차단할 수있는 짧은 작업이 아닙니다. 사용 대신에 I/O 비 - 블로킹 (non-blocking) :

+0

하나가,'BeginRead' 그것이 IOCP를 사용하기 때문에이 문제를 해결할 수있는 가장 좋은 방법입니다. –

관련 문제