Exemple #1
0
        private async void  button1_Click(object sender, EventArgs e)
        {
            listView1.Items.Clear();
            this.ct = new CancellationTokenSource();

            string path          = Dir.Text;
            int    numberOfFiles = 1;

            if (!Directory.Exists(path))
            {
                listView1.Items.Add(new ListViewItem {
                    Text = "Invalid Directory"
                });
                return;
            }

            try
            {
                numberOfFiles = Int32.Parse(NumberOfFIles.Text);
            }
            catch (Exception)
            {
                listView1.Items.Clear();
                ListViewItem toAdd = new ListViewItem();
                toAdd.Text = "Invalid number.";
                listView1.Items.Add(toAdd);
                return;
            }


            this.progressTask.Value = 0;
            listView1.Items.Add(new ListViewItem {
                Text = "Running... "
            });
            try {
                ResultParallel res = await Ex2.processDirAsync(path, numberOfFiles, ct.Token, (progress, totalItems) => { SetValue((Int32)((((float)(int)progress) / (float)(int)totalItems) * 100f)); });

                listView1.Items.Clear();
                listView1.Items.Add(new ListViewItem {
                    Text = "Number of files processed " + res.numberOfFiles
                });
                listView1.Items.AddRange(res.list.ConvertAll <ListViewItem>((item) =>
                {
                    return(new ListViewItem
                    {
                        Text = item
                    });
                }).ToArray());
            }
            catch (OperationCanceledException ex)
            {
                listView1.Items.Clear();
                listView1.Items.Add(new ListViewItem {
                    Text = "Cancelled...."
                });
            }

            catch (Exception ex)
            {
                listView1.Items.Clear();
                listView1.Items.Add(new ListViewItem {
                    Text = "Error: " + ex.Message
                });
            }
            finally
            {
                this.ct.Dispose();
            }
        }