分享

子线程中操作控件

 ~飘落~ 2010-11-14
方式一:
public partial class Form1 : Form
{
private delegate void FlushClient();//代理
public Form1()
{
       InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
      Thread thread = new Thread(CrossThreadFlush);
      thread.IsBackground
= true;
      thread.Start();
}

private void CrossThreadFlush()
{
      while (true)
      {
            //将sleep和无限循环放在等待异步的外面
            Thread.Sleep(1000);
            ThreadFunction();
      }
}
private void ThreadFunction()
{
      if (this.textBox1.InvokeRequired)//等待异步
      {
            FlushClient fc
= new FlushClient(ThreadFunction);
            this.Invoke(fc);//通过代理调用刷新方法
      }
      else
      {
            this.textBox1.Text = DateTime.Now.ToString();
      }
  }
}
此方法2.0及以上
方法二:
private void ControlThread()
{
            MethodInvoker TextBox1Show = new MethodInvoker(myControl);
            BeginInvoke(TextBox1Show);
}
private void myControl()
{
            textBox1.Text = "kdkkdkk2";
 }
方法三:
this.Invoke((EventHandler)(delegate {}));

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多