Note that there are some explanatory texts on larger screens.

plurals
  1. POAsp.net Update labels based on event
    primarykey
    data
    text
    <p>i am facing one problem.</p> <p>what i have to do is. There is a button on page which starts the processing of some jobs.</p> <p>when i press start button i am calling ProcessJobs method of my Business layer which raises an event having total number of jobs. I have to display this count in ListBox control. </p> <p>After this in processing of job there are several status messages raised via same event. these messages should be displayed at web form in list box control</p> <p>But i am not getting web page to update itself. I also added timer control and refreshes the page after 1 sec. but page is not being updated.</p> <p>here is code</p> <p>Default.aspx.cs</p> <pre><code>public partial class xxxxx: System.Web.UI.Page { private xxxx manager; protected void Page_Load(object sender, EventArgs e) { if (this.manager == null) { manager = new xxxx(); this.manager.ProcessEmailEvent += new EventHandler&lt;EventArg&lt;string&gt;&gt;(manager_ProcessEmailEvent); } if (!Page.IsPostBack) { this.btnStop.Visible = false; } } void manager_ProcessEmailEvent(object sender, EventArg&lt;string&gt; e) { this.lblStatus.Text = this.lblStatus.Text + "&lt;br&gt;" + e.Data; } protected void processEmailTimer_Tick(object sender, EventArgs e) { int tickCount = this.manager.EmailProcessCount; int totalEmailCount = this.manager.TotalEmailsCount; this.lblProcessEmail.Text = string.Format("Processing Emails &lt;b&gt;{0}&lt;/b&gt; of &lt;b&gt;{1}&lt;/b&gt;", tickCount, totalEmailCount); } protected void btnStart_Click(object sender, EventArgs e) { this.processEmailTimer.Enabled = true; this.btnStart.Visible = false; this.btnStop.Visible = true; this.manager.ProcessEmails(this.chkValidateEmail.Checked, this.chkTesting.Checked); } protected void btnStop_Click(object sender, EventArgs e) { this.processEmailTimer.Enabled = false; this.btnStart.Visible = true; this.btnStop.Visible = false; this.manager.Stop(); } </code></pre> <p>Here is business Logic for processing emails</p> <pre><code>public event EventHandler&lt;EventArg&lt;string&gt;&gt; ProcessEmailEvent; public void InvokeProcessEmailEvent(EventArg&lt;string&gt; e) { EventHandler&lt;EventArg&lt;string&gt;&gt; handler = ProcessEmailEvent; if (handler != null) handler(this, e); } public void ProcessEmails(bool validateSenderEmail, bool deleteEmailAfterProcess) { // Creaate pop3 Client POP3_Client popClient = new POP3_Client(); // Connect to POP3 host popClient.Connect(Utility.POP3Host, Utility.POP3Port, Utility.UseSSL); // Authenticate email address and password popClient.Authenticate(Utility.EmailAddress, Utility.Password, false); // Get Email count int msgCount = popClient.Messages.Count; // Raising event to update status on default.aspx this.InvokeProcessEmailEvent(new EventArg&lt;string&gt;("Emails : " + msgCount)); TotalEmailsCount = msgCount; // Start emai Processing processEmailStarted = true; for (int i = 0; i &lt; msgCount; i++) { this.EmailProcessCount = i + 1; // Raising event to update status on default.aspx this.InvokeProcessEmailEvent(new EventArg&lt;string&gt;("Getting Email " + (i + 1))); // Get message var msg = popClient.Messages[i]; // Get Email header Mail_Message mime = Mail_Message.ParseFromByte(msg.HeaderToByte()); StringBuilder sb = new StringBuilder(); this.InvokeProcessEmailEvent(new EventArg&lt;string&gt;("--------------------------------")); this.InvokeProcessEmailEvent(new EventArg&lt;string&gt;("From : " + mime.From.ToString())); this.InvokeProcessEmailEvent(new EventArg&lt;string&gt;("Subject : " + mime.Subject.ToString())); this.InvokeProcessEmailEvent(new EventArg&lt;string&gt;("Date : " + mime.Date.ToString())); this.InvokeProcessEmailEvent(new EventArg&lt;string&gt;("Size (KB): " + (msg.Size / (decimal)1000).ToString())); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload