温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

线程间操作无效

发布时间:2020-06-10 23:50:24 来源:网络 阅读:295 作者:jimmycaicai 栏目:编程语言

方法一:

  public Form1()
  {
InitializeComponent();
    CheckForIllegalCrossThreadCalls = false;
  }

方法二:

       using System;
 using System.Threading;
 using System.Windows.Forms;
 
 namespace TestingUIThread
 {
     public partial class Form1 : Form
     {
         Thread thread = null;
 
         public Form1()
         {
            
             InitializeComponent();
         }
 
         private void btnEnable_Click(object sender, EventArgs e)
         {
             thread = new Thread(new ParameterizedThreadStart(EnableButton));
             thread.Start(null);
         }
 
         private void EnableButton(object o)
         {
             EnableButton();
         }
 
         private delegate void EnableButtonCallBack();
 
         private void EnableButton()
         {
             if (this.btnTest.InvokeRequired)
             {
                 this.Invoke(new EnableButtonCallBack(EnableButton));
             }
             else
             {
                 btnTest.Enabled = true;
                 btnTest.Text = "Enabled";
             }
         }
     }
 }

方法三: 通过ISynchronizeInvoke和MethodInvoker.

using System;
 using System.ComponentModel;
 using System.Threading;
 using System.Windows.Forms;
 
 namespace TestingUIThread
 {
     public partial class Form1 : Form
     {
         Thread thread = null;
 
         public Form1()
         {
             InitializeComponent();
         }
 
         private void btnEnable_Click(object sender, EventArgs e)
         {
             thread = new Thread(new ParameterizedThreadStart(MyEnableButton));
             thread.Start(null);
         }
 
         private void MyEnableButton(object sender)
         {
             ISynchronizeInvoke synchronizer = this;
 
             if (synchronizer.InvokeRequired)
             {
                 MethodInvoker minvoker = new MethodInvoker(this.EnableButton);
                 synchronizer.Invoke(minvoker, null);
             }
             else
             {
                 this.EnableButton();
             }
         }
 
         private void EnableButton()
         {
             btnTest.Enabled = true;
             btnTest.Text = "Enabled";
         }
     }
 }

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI