Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.45 KB | None | 0 0
  1. private void buttonUpdateContacts_Click(object sender, EventArgs e)
  2. {
  3. BackgroundWorker worker = new BackgroundWorker();
  4. worker.WorkerReportsProgress = true;
  5. worker.DoWork += new DoWorkEventHandler(worker_DoWork);
  6. worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged);
  7. worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
  8. worker.RunWorkerAsync();
  9. }
  10.  
  11. void worker_DoWork(object sender, DoWorkEventArgs e)
  12. {
  13. (sender as BackgroundWorker).ReportProgress(0, "Parsing word document...");
  14.  
  15. WordDocumentParser wordDocumentParser;
  16. try
  17. {
  18. wordDocumentParser = new WordDocumentParser(Settings.Default.OohSheetLocation);
  19. }
  20. catch (FileNotFoundException exception)
  21. {
  22. e.Result = new FileNotFoundException("Could not find the word document. File path is: " + exception.FileName, exception);
  23. return;
  24. }
  25.  
  26. List<TppContact> oohSheetContacts = wordDocumentParser.GetContacts();
  27.  
  28. try
  29. {
  30. _contactManager = GoogleContactsManager.CreateContactsManager();
  31. }
  32. catch (InvalidCredentialsException argumentException)
  33. {
  34. e.Result = argumentException;
  35. return;
  36. }
  37. catch (ArgumentNullException nullArg)
  38. {
  39. e.Result = nullArg;
  40. return;
  41. }
  42.  
  43. (sender as BackgroundWorker).ReportProgress(0, "Comparing Google contacts to the word document...");
  44. var comparer = new ContactComparer(oohSheetContacts, _contactManager);
  45. _actions = comparer.Compare();
  46. }
  47.  
  48. void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
  49. {
  50. labelCurrentStatus.Text = e.UserState.ToString();
  51. }
  52.  
  53. void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
  54. {
  55. if (e.Result != null)
  56. {
  57. MessageBox.Show((e.Result as Exception).Message);
  58. }
  59. else
  60. {
  61. if (_actions.Count == 0)
  62. {
  63. textBoxChanges.Text = "There are no changes to be made.";
  64. buttonApplyChanges.Enabled = false;
  65. }
  66. else
  67. {
  68. textBoxChanges.Text = string.Empty;
  69. _actions.ForEach(action => textBoxChanges.Text += action.ChangeDescription + Environment.NewLine);
  70. buttonApplyChanges.Enabled = true;
  71. }
  72. }
  73. }
  74.  
  75. private void button2_Click(object sender, EventArgs e)
  76. {
  77. labelCurrentStatus.Text = "Updating Google...";
  78. _contactManager.UpdateContacts(_actions);
  79.  
  80. labelCurrentStatus.Text = "Done.";
  81. }
  82.  
  83. // sample worker state class definition
  84. internal class WorkerState
  85. {
  86. public Exception ExceptionThrown { get; set; }
  87. public string ProgressMessage { get; set; }
  88. public int MaximumProgressValue { get; set; }
  89. public int ProgressValue { get; set; }
  90. public int Actions { get; set; }
  91. }
  92.  
  93. // this would likely be initialized / reinitiatlized before the RunWorkerAsync is called
  94. private WorkerState m_WorkerState;
  95.  
  96. private void buttonUpdateContacts_Click(object sender, EventArgs e)
  97. {
  98. // for question 2) this could be convered into some form of
  99. // factory where providing delegates for the ProgressChange and WorkCompleted
  100. BackgroundWorker worker = new BackgroundWorker();
  101.  
  102. worker.UserState = new WorkerState();
  103.  
  104. worker.WorkerReportsProgress = true;
  105. worker.DoWork += new DoWorkEventHandler(worker_DoWork);
  106. worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged);
  107. worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
  108. worker.RunWorkerAsync();
  109. }
  110.  
  111. void worker_DoWork(object sender, DoWorkEventArgs e)
  112. {
  113. Worker worker = (sender as BackgroundWorker);
  114. WorkerState state = worker.UserState;
  115.  
  116. state.UserState.ProgressMessage = "Parsing word document...";
  117. state.UserState.MaximumProgressValue = 100;
  118. state.UserState.ProgressValue = 0;
  119.  
  120. worker.ReportProgress(0, state);
  121.  
  122. // ...
  123.  
  124. try
  125. {
  126. // do something
  127. }
  128. catch (InvalidCredentialsException argumentException)
  129. {
  130. e.ExceptionThrown = argumentException;
  131. return;
  132. }
  133. catch (ArgumentNullException nullArg)
  134. {
  135. e.ExceptionThrown = nullArg;
  136. return;
  137. }
  138.  
  139. // ..
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement