2009-11-20 5 views

답변

7

SmtpClient의 MSDN page에 따르면 SendAsync의 유일한 목적은 전송을 처리하기 위해 대기하는 대신 현재 스레드가 처리를 계속할 수있게하는 것입니다. SendAsync의 목적은 한 번에 여러 개의 메시지를 보낼 수 있도록 허용하지 않기 때문에 메시지를 보내는 동안 처리를 계속할 수 있도록하는 것입니다. SendAsync와 Send는 둘 다 동일한 파이프 라인을 사용하므로 SendAsync는 메시지가 전송되는 동안 다른 일을 할 수있게 해줍니다.

+0

하나의 이메일을 여러 개 보내고 콜백을 잡으려면 가장 좋은 해결 방법은 무엇일까요? SmtpClient의 다중 인스턴스 생성? – James

+0

이 답변을 수락하기로 결정했습니다. 다른 대답은 내가 가지고있는 문제 *에 답을하지만,이 대답은 실제로 초기 질문을 다룹니다. – James

3

:

가 SendAsync를 호출 한 후에 가 SendAsync를 보내거나 사용하여 다른 전자 메일 메시지를 보내하기 전에 완료 에 전자 메일 전송을위한 을 기다려야합니다.

동일한 인스턴스를 다시 사용할 수 있지만 첫 번째 메일을 보낼 때까지 기다려야합니다.

+0

그렇긴하지만 SendAsync의 모든 목적을 이길 수는 없습니까? 너는 부름을 보낼지도 모른다. 내가 들으려고하는 것은 SendAsnyc가 각 메시지를 대기열에 넣고 리소스를 사용할 수있을 때 보내지 말아야한다는 것입니다. – James

+0

전자 메일을 병렬로 보내려면 다른 인스턴스가 필요합니다. 아마도 그것은'SmtpClient' 클래스가 설계된 방식 때문일 것입니다. –

+2

... 당신이 한 모든 것은 질문을 다시 말하고 그것이 사실이라는 것에 동의했습니다. –