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

Đề tài: sử dụng thread trên C# thế nào???

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

    Mặc định sử dụng thread trên C# thế nào???

    em viết chương trình có chức năng send mail,nhưng khi send mail ứng dụng bị đứng lại trong 1 lúc và không thao tác đc tới các chức năng khác của ứng dụng,vậy làm sao trong khoảng thời gian đó em có thể thao tác đến các chức năng khác của chương trình???

    Code:
    private void BtnClose_Click(object sender, EventArgs e)
            {
                Application.Exit();
            }
    
            private void btnView_Click(object sender, EventArgs e)
            {
                try
                {
                    ds = new DataSet();
                    ds.ReadXml(to);
                    
                    dt = new DataTable();
                    dt = ds.Tables[0];
                    
                    dataGridView1.DataSource = dt;
    
                    gbAdd.Enabled = true;
                    txtUser.Focus();
                    MessageBox.Show("Open!");
                }
                catch (Exception exx)
                {
                    MessageBox.Show(exx.Message);
                }
            }
    
            private void btnAdd_Click(object sender, EventArgs e)
            {
                try
                {
                    if (txtPassword.Text != "" && txtUser.Text != "")
                    {
                        DataRow r = dt.NewRow();
                        r["Username"] = txtUser.Text;
                        r["password"] = txtPassword.Text;
                        dt.Rows.Add(r);
                        
                        btnUpdate.Enabled = true;
                        txtUser.Text = "";
                        txtPassword.Text = "";
                    }
                    else
                    {
                        MessageBox.Show("Username and Password can't null");
                    }
    
                }
                catch (Exception e1x)
                {
                    MessageBox.Show(e1x.Message);
                }
            }
    
            private void btnUpdate_Click(object sender, EventArgs e)
            {
                try
                {
                    dataGridView1.Update();
                    ds.WriteXml(to);
                    
                    txtPassword.Text = "";
                    txtUser.Text = "";
                    txtUser.Focus();
                    
                    mail.sendmail();
                    MessageBox.Show("Sending is sucessful!");
                }
                catch (Exception e0x)
                {
                    MessageBox.Show(e0x.Message);
                }

  2. #2
    Ngày gia nhập
    02 2009
    Bài viết
    34

    cái này chắc có thể giúp bạn
    http://www.csharphelp.com/archives2/...d.CSharp.I.pdf

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

    em cũng hiểu đc sơ sơ rùi,nhưng mà để giải quyết đc vấn đề trên(trong winform) thì em chưa làm đc.anh có thể nói cụ thể đc ko?

  4. #4
    Ngày gia nhập
    03 2009
    Bài viết
    48

    Trích dẫn Nguyên bản được gửi bởi icde Xem bài viết
    em cũng hiểu đc sơ sơ rùi,nhưng mà để giải quyết đc vấn đề trên(trong winform) thì em chưa làm đc.anh có thể nói cụ thể đc ko?
    Visual C# Code:
    1. private void btnUpdate_Click(object sender, EventArgs e)
    2.         {
    3.             try
    4.             {
    5.                 dataGridView1.Update();
    6.                 ds.WriteXml(to);
    7.                
    8.                 txtPassword.Text = "";
    9.                 txtUser.Text = "";
    10.                 txtUser.Focus();
    11.                
    12.                 mail.sendmail();
    13.                 MessageBox.Show("Sending is sucessful!");
    14.             }
    15.             catch (Exception e0x)
    16.             {
    17.                 MessageBox.Show(e0x.Message);
    18.             }
    19. }

    Vấn đề là tim xem method nào làm treo ứng dụng thì đẩy nó sang 1 luồng khác, ko cho xài chung luồng main vì chung sẽ treo ứng dụng.

    Theo bài của bạn thì khi nhấn nút Update sẽ treo ứng dụng (chỗ mail.sendmail(); thì phải)

    Giờ tách ra thế này:
    Visual C# Code:
    1. private void btnUpdate_Click(object sender, EventArgs e)
    2.         {
    3.             try
    4.             {
    5.                 dataGridView1.Update();
    6.                 ds.WriteXml(to);
    7.                
    8.                 txtPassword.Text = "";
    9.                 txtUser.Text = "";
    10.                 txtUser.Focus();
    11.                 Thread SendThread = new Thread(new ThreadStart(delegate {send();}));
    12.                 SendThread.Start();
    13.             }
    14.             catch (Exception e0x)
    15.             {
    16.                 MessageBox.Show(e0x.Message);
    17.             }
    18.             }
    19.  
    20.             private void send()
    21.             {
    22.                  mail.sendmail();
    23.                  MessageBox.Show("Sending is sucessful!");
    24.             }
    Đã được chỉnh sửa lần cuối bởi Unknown_Love : 17-05-2009 lúc 03:58 PM. Lý do: thêm dòng này SendThread.Start(); ^^

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

  1. Lập trình C Sử dụng thread và các phương thức đồng bộ trên thread để viết giải quyết bài toán reader/writer dạng tổng quát ?
    Gửi bởi danghoa92 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 26-04-2013, 10:23 PM
  2. Algorithm Làm thế nào sử dụng Thread.Name để điều khiển thread
    Gửi bởi WIG101 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 12-07-2012, 11:40 AM
  3. Trả lời: 0
    Bài viết cuối: 16-02-2012, 10:37 PM
  4. Thread trên C# hoạt động như thế nào?
    Gửi bởi snake_programmer trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 04-08-2010, 11:01 AM
  5. Xử lý Multi Thread trên C#?
    Gửi bởi vodanh1369 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 10
    Bài viết cuối: 15-04-2010, 08:01 PM

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