Jag satt och exprimenterade lite här idag och tänkte försöka göra lite ansyknrona anrop i ett batch program som jag kör då och då. Jag vill skicka mail till diverse folk och jag tänkte att jag skulle försöka skicka mailet asynkront. Ska säga oxå att det är .net 2.0. Koden ser ut såhär .. Eftersom dina objekt är deklarerade lokalt i metoden så hinner de antagligen raderas innan din asynkrona metod körs.. Ahhh .. shit asså. Det är som dom skriver överallt jävligt lurigt med asynkron saker .. Skumt betende med asynkrona anrop
class program
{
delegate void SendMailDelegate(string to);
static void Main(string[] args)
{
SendMailDelegate d = new SendMailDelegate(SendBanMail);
d.BeginInvoke("ola@raaw.se", OnMailSent, null);
}
static void sendmail(string to)
{
SmtpClient smtpClient = new SmtpClient();
MailMessage BanMessage = new MailMessage();
send ..
}
static void OnMailSent(IAsyncResult ia)
{
AsyncResult ar = (AsyncResult)ia;
SendMailDelegate d = (SendMailDelegate)ar.AsyncDelegate;
d.EndInvoke(ia);
}
}
Detta funkade inte alls. När jag rensade bort lite kod och tog bort
SmtpClient smtpClient = new SmtpClient();
MailMessage BanMessage = new MailMessage();
De där två raderna och bara gjorde en Console.WriteLine så funkade allt utmärkt. Varför gör den sådär? Det verkar som den helt utan exception eller något bara skippade min metod rakt av när den försökte instanciera mina object.
Jag antar att det är nåt jag missat "in the nature of async programing" men jag är jävligt nyfiken på vad det kan vara.
Saken är inget problem längre då jag hittade att man SmtpClient tydligen hade inbyggda "SendAsync" metoder men som sagt jag är ändå väldigt nyfiken på vad der här kan bero på ..
Tacksam för svar!
Mvh Ola
Sv: Skumt betende med asynkrona anrop
Sv:Skumt betende med asynkrona anrop
Tack för svaret iallafall!