Advertisement
Guest User

Untitled

a guest
Feb 10th, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.76 KB | None | 0 0
  1.  
  2. private BackgroundWorker[] Workers;
  3. private int MaxWorkers = 10;
  4. private Queue<string> Clients = new Queue<string>();
  5.  
  6. private void _StartNewClient(BackgroundWorker bw)
  7. {
  8. if (Clients.Count > 0)
  9. {
  10. string md5nummer = Clients.Dequeue();
  11. Debug.WriteLine("Starting " + md5nummer);
  12. bw.RunWorkerAsync(md5nummer);
  13. }
  14. if (Clients.Count == 0)
  15. {
  16.  
  17.  
  18. }
  19.  
  20. }
  21.  
  22. //BackgroundWorker ~> Task
  23. private void bw_DoWork(object sender, DoWorkEventArgs e)
  24. {
  25. Debug.WriteLine("Working " + e.Argument.ToString());
  26. ~DO SMTH
  27. Debug.WriteLine("Worker # " + e.Argument.ToString());
  28. e.Result = e.Argument.ToString();
  29. }
  30.  
  31. //Background-Worker-Finished
  32. private void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
  33. {
  34. solved++;
  35. if (Clients.Count > 0)
  36. {
  37. Debug.WriteLine("Completed " + e.Result);
  38. _StartNewClient((BackgroundWorker)sender);
  39. }
  40. if (Clients.Count == 0)
  41. {
  42. bool isAnyBusy = true;
  43. for (int i = 0; i < MaxWorkers; i++)
  44. {
  45. if (Workers[i].IsBusy != true)
  46. {
  47. isAnyBusy = false;
  48. }
  49. else { isAnyBusy = true; }
  50. }
  51.  
  52. if (!isAnyBusy && !finishesMsgShown)
  53. {
  54. finishesMsgShown = true;
  55. }
  56. }
  57.  
  58.  
  59.  
  60. }
  61. //Start Event
  62. private void button2_Click(object sender, EventArgs e)
  63. {
  64.  
  65. MaxWorkers = int.Parse(numericUpDown1.Value.ToString());
  66.  
  67. for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
  68. {
  69. Clients.Enqueue(i.ToString());
  70. Debug.WriteLine("Added: " + i.ToString());
  71. }
  72.  
  73. Workers = new BackgroundWorker[MaxWorkers];
  74. for (int i = 0; i < MaxWorkers; i++)
  75. {
  76. Workers[i] = new BackgroundWorker();
  77. Workers[i].WorkerSupportsCancellation = true;
  78. Workers[i].DoWork += new DoWorkEventHandler(bw_DoWork);
  79. Workers[i].RunWorkerCompleted += new
  80. RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
  81. _StartNewClient(Workers[i]);
  82. }
  83.  
  84. Debug.WriteLine("Finished Click handler");
  85. }
  86. ]]></Code>
  87. </Snippet>
  88. </CodeSnippet>
  89. </CodeSnippets>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement