# Heel eenvoudig één... hoe je een multiithreadde roep in één eenvoudige stap kan doen

<datetime class="hidden">2004-07-06T00:00</datetime>

<!-- category -- mostlylucidcouk, Imported -->
Ik heb de neiging om te vergeten dat mensen niet alles weten.(, in de begeleiding noemden we het ", contextueel kaderen ", -, je mentaliteit in principe aanpassen op die van de persoon die je begeleidt ', met dit in gedachten )., hier ,, een eenvoudige die ik veel voorwerpen heb vergeten ', ik weet het niet -, hoe je een methode asynchronisch noemt ,, e., g.,, hoe een e-mail stuurt zonder het draadje van een ASP te blokkeren ., NET-pagina ?, Well,, ., Net maakt dit heel makkelijk te doen.

Dus, je weet waarschijnlijk dat e-mail in ASP versturen dood makkelijk is.

Met behulp van System;

Met behulp van het systeem.WebM SK1Mail;

Namespace ExtraControls

{

///

/// Samenvattingsbeschrijving voor MailSender

///

MailSender van publieke klasse

{

public void SendMail(string vanAddress,string naarAddress ,string subjectLineMSC3string messageTextM SK4

{

SmtpMail.Versenden(vanAddressM SK2 naarAddress ,subjectLineMska4messageTextMske5

}

}

}

Regterkant, dus dit stuurt naar de lokale bediener, eenvoudige e-mail , hoe maak je deze asynchrone?

Met behulp van System;

Met behulp van het systeem.WebM SK1Mail;

Namespace ExtraControls

{

///

/// Samenvattingsbeschrijving voor MailSender

///

MailSender van publieke klasse

{

public void Main(string vanAddress,string naarAddress ,string subjectLineMSC3string messageTextM SK4

{

SendMailDelegate del = nieuwe SendMaildelegateM SK1SendMail);

AsyncCallback callback = nieuwe Asynce CallbackM SK1EndSendMail);

IAsyncResult ar = del.BeginOproepen (vanAddressM SK3 naarAddressCustomLineMST5messageTextMst6callbackM st7nullMstr8

}

public void EndSendMail(IAsyncResult ar)

{

SendMailDelegate del = (SendMailDelegate)arM SK3AsyncStateMSC4

Probeer

{

del.EndInvoke

}

Opvang

{

//Of de uitzondering hier behandelen...

throw;

}

}

public delegate void SendMailDelegate(string vanAddressM SK1string naarAddress ,string subjectLine,string messageTextMSC4

public void SendMail(string vanAddress,string naarAddress ,string subjectLineMSC3string messageTextM SK4

{

SmtpMail.Versenden(vanAddressM SK2 naarAddress ,subjectLineMska4messageTextMske5

}

}

}

Juist, dus er zijn hier een paar dingen aan toegevoegd - dan zie je dat er een delegate genaamd SendMailDelegate is - die in essentie werkt als een methoden-wyser waardoor je de SendMail-methode op een nieuwe draad uitvoertM SK5 De echte 'uitvoerMSC7 vindt plaats met het delMST8BeginInvokeMSP9 lijnMSSK10 De AsyncCallback specifiek voor die lijn geeft ons een haak in een methode die uitloopt nadat de Sendmail-methode voltooid is ♫ MST11 dit is waar je fouten kan verwerken zoals ik aangetoond hebMst13 hetMSt14 en ook waar je de EndInvocation kunt bellen voor de delegate MST15

Nu is het niet nodig om de EndSendMail-methode te gebruiken voor het roepen van de 'EndInvoke' - maar het is de beste praktijk om potentiële geheugenuitgaven te onthullen.