Chia sẻ

Giới thiệu

Backgroundworker là một chức năng mà C# hỗ trợ cho các lập trình viên để xây dựng các ứng dụng chạy nền, có nghĩa là ứng dụng có quá trình chạy ngầm mà ta không nhìn thấy được trên màn hình, ví dụ như chương trình Internet Download Manager khi tải file các bạn sẽ thấy quá trình vẫn thực hiện nhưng mà Form không bị đơ. Có rất nhiều bài viết về Backgroundworker, các bạn có thể tìm kiếm trên google, tuy nhiên csharpcanban.com sẽ hướng dẫn các bạn sử dụng Backgroundworker một cách dễ hiểu nhất.

Xây dựng ứng dụng

Bước 1. Tạo một ứng dụng mới bằng Visual Studio C#

Bước 2. Kéo 01 điều khiển progressBar, 01 label, 02 button, 01 backgroundWorker vào Form1 như dưới đây.

Bước 3. Nhấn chuột vào backgroundWorker1 chọn Properties, đặt các thuộc tính WorkerReportsProgressWorkerSupportsCancellation (nếu các bạn muốn dừng quá trình chạy giữa chừng) là True.

Bước 4. Vào Event của backgroundWorker1 nhấp đúp chuột vào 3 sự kiện có trong đó và thêm các đoạn mã sau đây.

Dưới đây là code của từng sự kiện:

Đầu tiên là viết một cái thông báo để khi hoàn thành sẽ gọi cái thông báo ra

public void HienThi(string text)
{
    MessageBox.Show(text);
}

Tiếp đến là thời gian nghỉ, tốc độ load nhanh hay chậm là dựa vào cái hàm này, tham số truyền càng nhỏ thì thời gian chạy càng nhanh, đơn vị tính theo mili giây

private void Work()
{
   Thread.Sleep(100);
}

Trong sự kiện backgroundWorker1_DoWork thêm đoạn mã sau

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
  for (int i = 0; i <= 100; i++)
  {
      if (backgroundWorker1.CancellationPending)
      {
        e.Cancel = true;
      }
      else
      {
        Work();
        backgroundWorker1.ReportProgress(i);
      }
                
  }

}

Trong sự kiện backgroundWorker1_ProgressChanged thêm đoạn mã sau

private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
   progressBar1.Value = e.ProgressPercentage;
   label1.Text = e.ProgressPercentage.ToString() + "%";
}

Tiếp theo là đối với sự kiện backgroundWorker1_RunWorkerCompleted

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
     if (e.Cancelled)
    {
        HienThi("Dừng Lại");
    }
    else
    {
        HienThi("Thành Công");
    }
}

Đối với 2 button ta thêm các đoạn mã sau vào sự kiện Click chuột

Xem thêm  [WPF] Hướng dẫn đổ bóng cho chữ trong WPF

Button Start dùng để khởi động một backgroundWorker

private void starbutton_Click(object sender, EventArgs e)
{
   backgroundWorker1.RunWorkerAsync();
}

Button Stop dùng để dừng backgroundWorker đang chạy

private void exitbutton_Click(object sender, EventArgs e)
{
   backgroundWorker1.CancelAsync();

}

Lời kết

Trên đây csharpcanban.com đã Hướng dẫn các bạn xây dựng một ứng dụng đơn giản sử dụng backgroundWorker bằng C#. Cũng không quá khó, hãy thực hành viết ứng dụng với backgroundWorker trên C# nhé, và cảm nhận hoạt động của backgroundWorker. Hãy đặt câu hỏi trong phần bình luận ở dưới đây. Csharpcanban.com sẽ trả lời các bạn cụ thể từng khúc mắc.

Trong các bài tiếp theo mình sẽ tiếp tục hướng dẫn các bạn sử dụng Microsoft Visual Studio C# , sử dụng các Control trong C#, đó là sử dụng Combobox, Listbox, Radio Button, và nhiều Control khác, hãy thường xuyên theo dõi website csharpcanban.com để cập nhật các bài học mới nhé các bạn.

Bản quyền

Nội dung trên csharpcanban.com được biên soạn, biên dịch từ nhiều nguồn khác nhau, đồng thời đã được viết thành chương trình chạy. Csharpcanban.Com bảo lưu mọi quyền đối với những bài viết này. Mọi hình thức sao chép đều cần phải được Csharpcanban.Com cấp phép.

RSS Thủ thuật & Mẹo vặt

Xem thêm  [C#] Tạo đồng hồ đếm ngược theo giây

Chia sẻ

By admin

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *