Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private void buttonUpdateContacts_Click(object sender, EventArgs e)
- {
- BackgroundWorker worker = new BackgroundWorker();
- worker.WorkerReportsProgress = true;
- worker.DoWork += new DoWorkEventHandler(worker_DoWork);
- worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged);
- worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
- worker.RunWorkerAsync();
- }
- void worker_DoWork(object sender, DoWorkEventArgs e)
- {
- (sender as BackgroundWorker).ReportProgress(0, "Parsing word document...");
- WordDocumentParser wordDocumentParser;
- try
- {
- wordDocumentParser = new WordDocumentParser(Settings.Default.OohSheetLocation);
- }
- catch (FileNotFoundException exception)
- {
- e.Result = new FileNotFoundException("Could not find the word document. File path is: " + exception.FileName, exception);
- return;
- }
- List<TppContact> oohSheetContacts = wordDocumentParser.GetContacts();
- try
- {
- _contactManager = GoogleContactsManager.CreateContactsManager();
- }
- catch (InvalidCredentialsException argumentException)
- {
- e.Result = argumentException;
- return;
- }
- catch (ArgumentNullException nullArg)
- {
- e.Result = nullArg;
- return;
- }
- (sender as BackgroundWorker).ReportProgress(0, "Comparing Google contacts to the word document...");
- var comparer = new ContactComparer(oohSheetContacts, _contactManager);
- _actions = comparer.Compare();
- }
- void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
- {
- labelCurrentStatus.Text = e.UserState.ToString();
- }
- void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
- {
- if (e.Result != null)
- {
- MessageBox.Show((e.Result as Exception).Message);
- }
- else
- {
- if (_actions.Count == 0)
- {
- textBoxChanges.Text = "There are no changes to be made.";
- buttonApplyChanges.Enabled = false;
- }
- else
- {
- textBoxChanges.Text = string.Empty;
- _actions.ForEach(action => textBoxChanges.Text += action.ChangeDescription + Environment.NewLine);
- buttonApplyChanges.Enabled = true;
- }
- }
- }
- private void button2_Click(object sender, EventArgs e)
- {
- labelCurrentStatus.Text = "Updating Google...";
- _contactManager.UpdateContacts(_actions);
- labelCurrentStatus.Text = "Done.";
- }
- // sample worker state class definition
- internal class WorkerState
- {
- public Exception ExceptionThrown { get; set; }
- public string ProgressMessage { get; set; }
- public int MaximumProgressValue { get; set; }
- public int ProgressValue { get; set; }
- public int Actions { get; set; }
- }
- // this would likely be initialized / reinitiatlized before the RunWorkerAsync is called
- private WorkerState m_WorkerState;
- private void buttonUpdateContacts_Click(object sender, EventArgs e)
- {
- // for question 2) this could be convered into some form of
- // factory where providing delegates for the ProgressChange and WorkCompleted
- BackgroundWorker worker = new BackgroundWorker();
- worker.UserState = new WorkerState();
- worker.WorkerReportsProgress = true;
- worker.DoWork += new DoWorkEventHandler(worker_DoWork);
- worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged);
- worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
- worker.RunWorkerAsync();
- }
- void worker_DoWork(object sender, DoWorkEventArgs e)
- {
- Worker worker = (sender as BackgroundWorker);
- WorkerState state = worker.UserState;
- state.UserState.ProgressMessage = "Parsing word document...";
- state.UserState.MaximumProgressValue = 100;
- state.UserState.ProgressValue = 0;
- worker.ReportProgress(0, state);
- // ...
- try
- {
- // do something
- }
- catch (InvalidCredentialsException argumentException)
- {
- e.ExceptionThrown = argumentException;
- return;
- }
- catch (ArgumentNullException nullArg)
- {
- e.ExceptionThrown = nullArg;
- return;
- }
- // ..
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement