1. C# / Говнокод #18163

    +141

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    private List<string> urls = new List<string>();
    
            private int urls_index = -1;
    
            private ProgressBar pb = new ProgressBar()
            {
                Width = 291,
                Height = 26,
                Maximum = 100,
                Minimum = 0,
                Location = new Point(12, 41)
            };
    
            public Object SyncIndex = new Object();
    
    public void DownLoad(object index)
            {
                int indexwhile = (int) index;
                while (work)
                {
                    int localIndex;
    
                    lock (SyncIndex)
                    {
                        urls_index++;
                        localIndex = urls_index;
                    }
    
                    WebClient webClient = new WebClient();
                    try
                    {
                        webClient.DownloadFile(new Uri(urls[localIndex]), "img/" + localIndex + ".jpg");
                        webClient.DownloadProgressChanged += (s, a) => Invoke(new Action(() => {progressBars[indexwhile].Value = a.ProgressPercentage;})); 
                    }
                    catch (Exception exception)
                    {
                        Invoke(new Action(() =>
                        {
                            listBox2.Items.Add("Ошибка" + listBox1.Items[localIndex]);
                        }));
    
                        DownLoad(index);
                    }
    
                    Invoke(new Action(() =>
                    {
                        listBox1.Items[localIndex] =  "Загружен" + listBox1.Items[localIndex];
                        label1.Text = urls.Count.ToString();
                        richTextBox1.Text += localIndex + @".jpg Загружен" + Environment.NewLine;
                    }));
    
                    Thread.Sleep(500);
    
                }
            }
    
    
    private void button2_Click(object sender, EventArgs e)
            {
                work = true;
    
                Thread[] threads = new Thread[30];
    
                
    
                for (int i = 0; i < 20; i++)
                {
                    int mnoj = i + 1;
                    progressBars[i] = new ProgressBar()
                    {
                        Width = 291,
                        Height = 26,
                        Maximum = 100,
                        Minimum = 0,
                        Location = new Point(12, 41)
                    };
                    progressBars[i].Location = new Point(12, 41 * mnoj);
                    Controls.Add(progressBars[i]);
                    threads[i] = new Thread(DownLoad);
                    threads[i].IsBackground = true;
                    threads[i].Start(i);
                }
            }

    И все в одной форме..

    Запостил: igorkrets, 14 Мая 2015

    Комментарии (1) RSS

    Добавить комментарий