Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private void bgwProcessLogin_DoWork(object sender, DoWorkEventArgs e)
- {
- /*
- * Perform at test to see if the background worker has been
- * cancelled by the user before attemping to continue to login.
- *
- * Cancel background worker on any failed attemp to login
- */
- // Start with cancel being false as to reset this if cancel has been set to true
- // in the cancel button.
- e.Cancel = false;
- NetworkingTest connection_test = new NetworkingTest();
- if (!this.bgwProcessLogin.CancellationPending)
- {
- // Check local LAN or Wireless connection
- if (!connection_test.IsNetworkConnected())
- {
- // Update label
- if (this.lblRegistering.InvokeRequired)
- {
- this.lblRegistering.Invoke(new UpdateRegisterLabelDelegate(UpdateRegisterLabel), "No network connection");
- }
- else
- {
- this.lblRegistering.Text = "No network connection";
- }
- // Failed attemp
- this.bgwProcessLogin.CancelAsync();
- e.Cancel = true;
- return;
- }
- // Report current progress
- this.bgwProcessLogin.ReportProgress(0, "Network connected");
- }
- else
- {
- // User cancelled
- e.Cancel = true;
- return;
- }
- // Test if access to Server is available
- if (!this.bgwProcessLogin.CancellationPending)
- {
- if (!connection_test.IsSIPServerAvailable())
- {
- // Update label
- if (this.lblRegistering.InvokeRequired)
- {
- this.lblRegistering.Invoke(new UpdateRegisterLabelDelegate(UpdateRegisterLabel), "Server unavailable");
- }
- else
- {
- this.lblRegistering.Text = "Server unavailable";
- }
- // Failed attemp
- this.bgwProcessLogin.CancelAsync();
- e.Cancel = true;
- return;
- }
- // Report current progress
- this.bgwProcessLogin.ReportProgress(1, "Server available");
- }
- else
- {
- // User cancelled
- e.Cancel = true;
- return;
- }
- .
- .
- .
- }
- private void bgwProcessLogin_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
- {
- // Check for any errors
- if (e.Error == null)
- {
- if (e.Cancelled)
- {
- // User cancelled login or login failed
- }
- else
- {
- // Login completed successfully
- }
- }
- else
- {
- // Something failed display error
- this.statusDisplay1.CallStatus = e.Error.Message;
- }
- }
- private void bgwProcessLogin_ProgressChanged(object sender, ProgressChangedEventArgs e)
- {
- this.lblRegistering.Text = e.UserState.ToString();
- }
- private void btnCancel_Click(object sender, EventArgs e)
- {
- // Cancel the logging in process
- this.bgwProcessLogin.CancelAsync();
- this.lblRegistering.Text = "Logged out";
- }
- public class AbortableBackgroundWorker : BackgroundWorker
- {
- private Thread workerThread;
- protected override void OnDoWork(DoWorkEventArgs e)
- {
- workerThread = Thread.CurrentThread;
- try
- {
- base.OnDoWork(e);
- }
- catch (ThreadAbortException)
- {
- e.Cancel = true; //We must set Cancel property to true!
- Thread.ResetAbort(); //Prevents ThreadAbortException propagation
- }
- }
- public void Abort()
- {
- if (workerThread != null)
- {
- workerThread.Abort();
- workerThread = null;
- }
- }
- }
Add Comment
Please, Sign In to add comment