Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > .NET Framework > Forum > C# WinApp สอบถามเรื่อง การใช้ System.Threading.Thread กับ textBox ที่ Bind กับ BindingSource ครับ



 

C# WinApp สอบถามเรื่อง การใช้ System.Threading.Thread กับ textBox ที่ Bind กับ BindingSource ครับ

 



Topic : 123107



โพสกระทู้ ( 4,436 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook



กำลังคิดหาวิธีที่จะทำให้ เวลา โหลด data แล้วโปรแกรมไม่กระตุก เลยลองใช้ System.Threading.Thread
โค้ด บ้าน ๆ เป็นแบบนี้ครับ

Code (C#)
private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'database2DataSet.ZipCodeT' table. You can move, or remove it, as needed.
            this.zipCodeTTableAdapter.Fill(this.database2DataSet.ZipCodeT);
           
        }
        void Display()
        {
            zipCodeTTableAdapter.FillBy(this.database2DataSet.ZipCodeT,textBox1.Text);
           // MessageBox.Show(zipCodeTBindingSource.Count.ToString());
            zipCodeTextBox.Invoke(new Action(() => { zipCodeTextBox.Refresh(); }));
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Display();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            new System.Threading.Thread(Display).Start();
        }


จากโค้ด ถ้าเราใช้ Display(); แบบนี้ใช้ได้ครับ
แต่ใช้ new System.Threading.Thread(Display).Start();

ตัว zipCodeTBindingSource.Count.ToString() เป็นปกติ ครับ
แต่ตัว zipCodeTextBox กลับไม่เปลี่ยนค่าครับ

1311

คาดว่าน่าจะเป็นที่ zipCodeTextBox ครับแต่ไม่รู้ติดตรงไหน



Tag : .NET, C#, VS 2012 (.NET 4.x), Windows







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2016-05-28 11:56:49 By : lamaka.tor View : 1694 Reply : 4
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ใช้ BackgroundWorker แทนครับ ไม่ต้องมานั่งเขีย Event เองครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-28 12:14:01 By : mr.win
 


 

No. 2



โพสกระทู้ ( 4,436 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

1211

Code (C#)
private void button2_Click(object sender, EventArgs e)
        {
           // new System.Threading.Thread(Display).Start();
            backgroundWorker1.RunWorkerAsync();
        }

        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            zipCodeTTableAdapter.FillBy(this.database2DataSet.ZipCodeT, textBox1.Text);

        }

        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {

        }

        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            MessageBox.Show(zipCodeTBindingSource.Count.ToString());
            if (e.Error != null) throw e.Error;
        }


ทำงานเสร็จแล้ว zipCodeTextBox กับ BindingNavigator ก็ไม่เปลี่ยนเหมือนเดิมครับ ทั้งๆที่ Display(); แค่นั้นทุกอย่างก็เปลี่ยนหมด

22


ประเด็นของปัญหานี้คือ ผมอยากจะ insert ข้อมูลจาก excel พอดีมันใช้เวลานาน แล้วทำให้ค้างที่หน้าโปรแกรม
ผมจึงลอง เอาพวก thread มาจับดูครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-28 15:04:09 By : lamaka.tor
 

 

No. 3



โพสกระทู้ ( 4,436 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ในที่สุดก็ได้ครับ
เพิ่ม zipCodeTBindingSource.ResetBindings(false);

Code (C#)
private void button2_Click(object sender, EventArgs e)
        {
            //new System.Threading.Thread(Display).Start();
            backgroundWorker1.RunWorkerAsync();
        }

        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            zipCodeTTableAdapter.FillBy(this.database2DataSet.ZipCodeT, textBox1.Text);

        }
        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            zipCodeTBindingSource.ResetBindings(false);
            if (e.Error != null) throw e.Error;
        }


ไปอ่านเจอโค๊ดแปลกๆ ได้ใจมากครับ

Code (C#)
button.Click += (_, __) =>
{
    // Create another thread that does something with the data object
    var worker = new BackgroundWorker();

    worker.DoWork += (___, _____) =>
    {
        for (int i = 0; i < 10; i++)
        {
            // This doesn't lead to any cross-thread exception
            // anymore, cause the binding source was told to
            // be quiet. When we're finished and back in the
            // gui thread tell her to fire again its events.
            myData.MyText = "Try " + i;
        }
    };

    worker.RunWorkerCompleted += (___, ____) =>
    {
        // Back in gui thread let the binding source
        // update the gui elements.
        bindingSource.ResumeBinding();
        button.Enabled = true;
    };

    // Stop the binding source from propagating
    // any events to the gui thread.
    bindingSource.SuspendBinding();
    button.Enabled = false;
    worker.RunWorkerAsync();
};

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-28 15:41:52 By : lamaka.tor
 


 

No. 4



โพสกระทู้ ( 538 )
บทความ ( 3 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ถ้าใช้ backgroupworker การทำงานมันจะแบ่งเป็น 2 ส่วนหลักๆ อ่ะครับ

คือ
ส่วนทำงาน Event DoWork
อันนี้ที่ใส่ใน code ก็คือถูกแล้ว อยากให้มันทำอะไรก็สั่งให้ทำตรงนี้

ส่วนแสดงผล Event ProgressChanged
อันนี้จะใช้สำหรับแสดงผล อย่างเดียวถ้าเอา code ส่วนทำงานมาใส่จะ error หรือทำงานไม่ถูกต้อง ระวังด้วยนะครับ
ที่จะเอามาใส่ ก็เช่น คิดจากจำนวน record ที่จะทำงานด้วย แล้วเอาคิดเป็น % แสดงผลใน slider
หรือในกรณีนี้คือให้ค่าใน zipcodetextbox เปลี่ยนแปลง เพิ่มตัวแปรมาตัวนึงครับ
ส่งค่าอัพเดทกันระหว่าง event DoWork กับ event ProgressChanged

ลองดูครับ ถ้าใช้เป็นแล้วสนุกนะ backgroupworker ประยุกต์ใช้ได้เพียบเลย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-28 15:49:27 By : salapao_codeman
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : C# WinApp สอบถามเรื่อง การใช้ System.Threading.Thread กับ textBox ที่ Bind กับ BindingSource ครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่