주석에 쓰여있는 것. MSDN에 따르면동일한 SmtpClient 인스턴스를 사용하여 여러 전자 메일을 비동기 적으로 보낼 수없는 이유는 무엇입니까?
답변
SmtpClient의 MSDN page에 따르면 SendAsync의 유일한 목적은 전송을 처리하기 위해 대기하는 대신 현재 스레드가 처리를 계속할 수있게하는 것입니다. SendAsync의 목적은 한 번에 여러 개의 메시지를 보낼 수 있도록 허용하지 않기 때문에 메시지를 보내는 동안 처리를 계속할 수 있도록하는 것입니다. SendAsync와 Send는 둘 다 동일한 파이프 라인을 사용하므로 SendAsync는 메시지가 전송되는 동안 다른 일을 할 수있게 해줍니다.
:
가 SendAsync를 호출 한 후에 가 SendAsync를 보내거나 사용하여 다른 전자 메일 메시지를 보내하기 전에 완료 에 전자 메일 전송을위한 을 기다려야합니다.
동일한 인스턴스를 다시 사용할 수 있지만 첫 번째 메일을 보낼 때까지 기다려야합니다.
그렇긴하지만 SendAsync의 모든 목적을 이길 수는 없습니까? 너는 부름을 보낼지도 모른다. 내가 들으려고하는 것은 SendAsnyc가 각 메시지를 대기열에 넣고 리소스를 사용할 수있을 때 보내지 말아야한다는 것입니다. – James
전자 메일을 병렬로 보내려면 다른 인스턴스가 필요합니다. 아마도 그것은'SmtpClient' 클래스가 설계된 방식 때문일 것입니다. –
... 당신이 한 모든 것은 질문을 다시 말하고 그것이 사실이라는 것에 동의했습니다. –
하나의 이메일을 여러 개 보내고 콜백을 잡으려면 가장 좋은 해결 방법은 무엇일까요? SmtpClient의 다중 인스턴스 생성? – James
이 답변을 수락하기로 결정했습니다. 다른 대답은 내가 가지고있는 문제 *에 답을하지만,이 대답은 실제로 초기 질문을 다룹니다. – James