예제 #1
0
        private void button1_Click(object sender, EventArgs e)
        {
            progressBarSample = new ProgressBarSample();
            progressBarSample.ProgressChanged += OnProgressChanged;

            button1.Enabled = false;
            // Dowork method executed in new thread, but work completed will start in main thread (ui-thread)
            System.Threading.Tasks.Task.Factory
            .StartNew(() => progressBarSample.DoWork())
            .ContinueWith((t, o) => WorkCompleted(t.Result), null, taskScheduler);
        }
예제 #2
0
        private async void button1_Click(object sender, EventArgs e)
        {
            button1.Enabled   = false;
            progressBarSample = new ProgressBarSample();
            progressBarSample.ProgressChanged += OnProgressChanged;

            //progressBarSample.WorkCompleted += OnWorkCompleted;
            var cancelled = await Task <bool> .Factory.StartNew(() => progressBarSample.DoWork());

            string message = cancelled ? "Work was cancelled" : "Work was done";

            MessageBox.Show(message);
            button1.Enabled = true;
        }