Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: hỏi Progressbar trong thread

  1. #1
    Ngày gia nhập
    11 2008
    Bài viết
    77

    Mặc định hỏi Progressbar trong thread

    Visual C# Code:
    1. private void button1_Click(object sender, EventArgs e)
    2.         {
    3.             try
    4.             {
    5.                 int num1 = Convert.ToInt32(txtfirst.Text);
    6.                 int num2 = Convert.ToInt32(txtsecond.Text);
    7.                 AddParam args = new AddParam(num1, num2);
    8.                 progressBar1.Maximum = 5;
    9.                 ProcessNumber.RunWorkerAsync(args); //ProcessNumber = backgroundworker
    10.             }
    11.             catch (Exception ex)
    12.             {
    13.                 MessageBox.Show(ex.ToString());
    14.             }
    15.         }
    16.  
    17.         private void ProcessNumber_DoWork(object sender, DoWorkEventArgs e)
    18.         {
    19.             try
    20.             {
    21.                 AddParam args = (AddParam)e.Argument;
    22.                
    23.                 for (int i = 0; i < 5; i++)
    24.                 {
    25.                     progressBar1.Value = count++;
    26.                     System.Threading.Thread.Sleep(1000);
    27.                 }
    28.                 e.Result = args.a + args.b;
    29.             }
    30.             catch (Exception ex)
    31.             {
    32.                 MessageBox.Show(ex.ToString());
    33.             }
    34.         }
    35.  
    36.         private void ProcessNumber_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    37.         {
    38.             MessageBox.Show(e.Result.ToString(),"Your result is");
    39.         }
    ============= xin lỗi , nhưng ko hiểu sao ko cho vô thẻ tag CODE dc===
    cho mình hỏi , mình đặt progressbar max =5 , khi lặp 5 lần = 5s thì ko hiểu sao bị lỗi [đại loại là : nó nằm ở 1 thread khác... mình ko biết cách sửa]
    Mình có kèm theo project
    thanks
    Attached Files Attached Files
    Đã được chỉnh sửa lần cuối bởi ZCoder87 : 17-01-2009 lúc 08:17 AM.

  2. #2
    Ngày gia nhập
    11 2008
    Bài viết
    8

    Bạn gặp lỗi "Cross-thread operation not valid", trên diên đàn cũng có nói rồi. Sửa lại đoạn update progressBar thành
    Visual C# Code:
    1. // Thay dòng:
    2. // progressBar1.Value = count++; thành:
    3. this.Invoke(new MethodInvoker(delegate()
    4.                         {
    5.                             progressBar1.Value = count++;
    6.                         }
    7.                    ));
    BTC

  3. #3
    Ngày gia nhập
    11 2008
    Bài viết
    77

    bạn giải thích 1 chút xíu dc ko
    Thông thường mình thấy hay thêm vào public delegate void xxxxx
    bạn làm thẳng = this.Invoke(new MethodInvoker(delegate() ..... )); là sao vậy bạn;
    thanks

  4. #4
    Ngày gia nhập
    11 2008
    Bài viết
    8

    Bạn đọc cái này sẽ hiểu
    BTC

  5. #5
    Ngày gia nhập
    11 2008
    Bài viết
    77

    ok cảm ơn bạn, mình đã hiểu đc 1 nữa , phần còn lại mình sẽ nghiên cứu thêm

Các đề tài tương tự

  1. Cách hiển thị % trong ProgressBar C#?
    Gửi bởi huyrua350 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 27-02-2012, 10:23 AM
  2. Trả lời: 0
    Bài viết cuối: 16-02-2012, 10:37 PM
  3. Hủy Thread khi đang copy file trong thread?
    Gửi bởi khabin trong diễn đàn Windows API, Hooking, xử lý Windows Message
    Trả lời: 6
    Bài viết cuối: 27-01-2012, 09:15 PM
  4. Socket vẫn bị lỗi khi dùng Thread? không thể gán giá trị vào textbox trong Thread ^^!
    Gửi bởi lion080889 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 16-07-2011, 06:35 PM
  5. Thread trong Dialog và Thread trog Tabcontrol ???
    Gửi bởi nam_dkn trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 2
    Bài viết cuối: 20-03-2009, 10:43 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn