c#使用MethodInvoker解決跨線程訪問控制項

來源:互聯網
上載者:User

.net 原則上禁止跨線程訪問控制項,因為這樣可能造成錯誤的發生,有一種方法是禁止編譯器對跨線程訪問作檢查,Control.CheckForIllegalCrossThreadCalls = false;可以實現訪問,但是出不出錯不敢保證C#跨線程訪問控制項執行階段錯誤。

使用MethodInvoker即可解決:

原代碼:

         private void btnOK_Click(object sender, EventArgs e)
         {
             tslInfo.Text = "請稍候...";
             Thread td = new Thread(new ThreadStart(run));
             td.Start();
         }

         /// <summary>
         /// 線程方法
         /// </summary>
         private void run()
         {
             this.tslInfo.Text = "就緒";
         }


修改後:
         private void btnOK_Click(object sender, EventArgs e)
         {
             tslInfo.Text = "請稍候...";
             Thread td = new Thread(new ThreadStart(threadRun));
             td.Start();
         }

         /// <summary>
         /// 原線程方法
         /// </summary>
         private void run()
         {
             this.tslInfo.Text = "就緒";
         }

         /// <summary>
         /// 線程方法
         /// </summary>
         private void threadRun()
         {
             MethodInvoker In = new MethodInvoker(run);
             this.BeginInvoke(In);
         }


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.