फिलहाल मैं डेल्फी में ई-मेल भेजने के लिए Ararat Synapse का परीक्षण कर रहा हूं।डेल्फी के लिए Synapse के साथ मैं एक एसएमटीपी प्रेषण ऑपरेशन कैसे रोक सकता हूं?
एक स्थानीय फ़ंक्शन एक TSMTPSend बनाता है और ई-मेल भेजता है।
मैं इस ऑपरेशन को कैसे रोक सकता हूं? मैंने कुछ स्थिति आउटपुट करने के लिए SMTP.Sock.OnStatus को असाइन किए गए कॉलबैक फ़ंक्शन को सेट किया है।
जब मैं भेज प्रगति को रद्द करना चाहता हूं, मैंने सोचा कि मैं कॉलबैक फ़ंक्शन के भीतर TSMTPSend की TTCPBlockSocket का उपयोग कर सकता हूं क्योंकि इस फ़ंक्शन में मुझे सीधे TSMTPSend तक कोई पहुंच नहीं है।
मुझे क्या करना चाहता था मूल रूप से की तरह
MyCallBack(Sender: TObject; Reason: THookSocketReason; const Value: string);
begin
if FCancelWasClicked then
begin
if Sender is TTCPBlockSocket then
TTCPBlockSocket(Sender).StopFlag := True;
// or TTCPBlockSocket(Sender).AbortSocket or CloseSocket
end;
end;
लग रहा है लेकिन StopFlag कोई प्रभाव नहीं और AbortSocket/CloseSocket एक Stackoverflow करने के लिए नेतृत्व क्योंकि सॉकेट तो HR_CloseSocket संदेशों बेहद पम्पिंग हो जाएगा पता चलता है।
क्या मैं इसे गलत कर रहा हूं? क्या अन्य विकल्प हैं?
धन्यवाद, यह एक दयालुता है जिसे मैं इसे ढूंढने में सक्षम नहीं था। यह अच्छी तरह से काम किया। –