zoukankan      html  css  js  c++  java
  • 如何在子线程中操作窗体上的控件

    一般来说,直接在子线程中对窗体上的控件操作是会出现异常,这是由于子线程和运行窗体的线程是不同的空间,因此想要在子线程来操作窗体上的控件,是不可能简单的通过控件对象名来操作,但不是说不能进行操作,微软提供了Invoke的方法,其作用就是让子线程告诉窗体线程来完成相应的控件操作。

     

    现在用一个用线程控制的进程条来说明,大致的步骤如下:

    1.  创建Invoke函数,大致如下:

            /// <summary>

            /// Delegate function to be invoked by main thread

            /// </summary>

            private void InvokeFun()

            {

                if( prgBar.Value < 100 )

                    prgBar.Value = prgBar.Value + 1;

            }

     

    2.  子线程入口函数:

            /// <summary>

            /// Thread function interface

            /// </summary>

            private void ThreadFun()

            {

                //Create invoke method by specific function

                MethodInvoker mi = new MethodInvoker( this.InvokeFun );

     

                for( int i = 0; i < 100; i++ )

                {

                    this.BeginInvoke( mi );

                    Thread.Sleep( 100 );

                }

            }

     

    3.  创建子线程:

                Thread thdProcess = new Thread( new ThreadStart( ThreadFun ) );

                thdProcess.Start();

     

           备注:

                  using System.Threading;

                  private System.Windows.Forms.ProgressBar prgBar;

  • 相关阅读:
    Git从入门到放弃
    Flex布局
    网络模型与TCP协议
    命令行技巧
    React环境搭建及部署
    Vue环境搭建及部署
    Python 集合set()
    Python-100天代码
    删除Windows启动管理器下的加载项
    windos7操作系统下easyBCD2.3安装Ubuntu18.04.1-desktop-amd64.iso双系统
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2373284.html
Copyright © 2011-2022 走看看