hallo thomas!
so funkts bei mir:
im hauptthread:
HttpContext context = HttpContext.Current;
SendNewsletter newsletter = new SendNewsletter(context); Thread sendMails = new Thread(new ThreadStart(newsletter.Send)); sendMails.Start();
in der klasse SendNewsletter:
public class SendNewsletter
{
public HttpContext context;public SendNewsletter(HttpContext context)
{
this.context = context;
}public void Send()
{
for(int i=0; i<10; i++)
{
context.Application["Status"] = i;
Thread.Sleep(2000);
}
}}
meine anderen probleme konnte ich aber nicht l�sen.... also eine neue instanz des mails bzw. des strings f�r mail.Body zu �bergeben.... das hat er im neuen thread sch�n durchgesch�ttelt....
ich habe mich entschlossen, es vorerst bei linearer abarbeitung zu belassen und es in der n�chsten zeit mal dahingehend zu �ndern, dass ich das mail im neuem thread nicht nur versende, sondern auch zusammenbaue... ich denk du machst das ja auch so.. ?!
hast du einen geeigneten progressbar gefunden? ist es kein problem, dass du von vornherein nicht weisst wielange die ganze versenderei dauern wird? oder machst auf pseudolinearer fortschrittsanzeige und nimmst die anzahl der versendeten mails im verh�ltnis zu den gesamtmails?
lg, oskar
From: Thomas Bandt <[EMAIL PROTECTED]> Reply-To: [email protected] To: [email protected] Subject: Re: [Asp.net] ASP.NET Threading Date: Wed, 23 Mar 2005 16:44:40 +0100
Hi,
wie machstn du das jetzt? Habe mal eben folgendes probiert, da setzt er mir die Application-Variable aber nicht:
Webform:
private void Page_Load(object sender, System.EventArgs e) { // Put user code to initialize the page here
if(Request.QueryString["Check"] != null) { SendNewsletter newsletter = new SendNewsletter(HttpContext.Current); Thread sendMails = new Thread(new ThreadStart(newsletter.Send)); sendMails.Start(); } else { if(Application["Status"] != null) { Response.Write(Application["Status"].ToString()); } } }
Im 2. Thread gestartete Klasse:
public class SendNewsletter {
//private HttpContext currentContext;
public SendNewsletter(HttpContext c) { // // TODO: Add constructor logic here // //currentContext = c; HttpContext.Current = c; }
public void Send() { for(int i=0; i<10; i++) { HttpContext.Current.Application["Status"] = i; Thread.Sleep(2000); } }
}
Irgendwie will er nicht ...
Oskar O schrieb:hallo christoph!
mit dem context im konstruktor hattest recht! danke!
mit dem copy hatte ich leider kein gl�ck.... hier hab ich in der doku nix gefunden um eine neue instanz einer mailmessage oder eines object mit copy zu erstellen.
"val" gibts in c# nicht...
lg, oskar
From: Schmid Christoph <[EMAIL PROTECTED]> Reply-To: [email protected] To: [email protected] Subject: Re: [Asp.net] ASP.NET Threading Date: Mon, 21 Mar 2005 18:04:11 +0100
> ok, dann werd ich eben ohne damit auskommen m�ssen.... ist ja schon was,
> wenn man weiss, dass es keine m�glichkeit gibt... ;-)
Evt. funktioniert es, wenn du das httpcontext.current z.B. beim Konstruktor
�bergibst und dann darauf zugreiffst. Musst aber ausprobieren.
> einen haken hat meine geschichte noch:
> wenn ich, nachdem ich den 2. thread aufgerufen habe, noch was am mail
> �ndere, dann bekomm ich die ge�nderte version zugesendet. konnte ich
> verifizieren, indem ich ein thread.sleep vor den �nderungen eingf�gt hab.
> ich nehm an, das ist deshalb, weil ich nur eine instanz des mails
> �bergebe...?!?
> wie k�nnte ich das l�sen???
zwei Vermutungen: evt. eine Copy erstellen myMail.copy() oder als val �bergeben?
Gruss Christoph
_______________________________________________ Asp.net Mailingliste, Postings senden an: [email protected] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net
_________________________________________________________________
Recherchieren Sie auf eigene Faust mit der wohl besten Suchmaschine im Netz. http://search.msn.at/
_______________________________________________ Asp.net Mailingliste, Postings senden an: [email protected] An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/asp.net
