`
chenp1111
  • 浏览: 239607 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

子线程调用主线程内容请使用委托函数

    博客分类:
  • C#
阅读更多
主线程读取文本显示文本内容,子线程会更新这个文本,并同步显示

1,类里面写一个委托函数
delegate void SetShowLogCallback();   //定义委托


2,程序load执行方法
private void Form1_Load(object sender, EventArgs e)
        {
            showSynchLog();
       
        }

  方法内容如下
 /**
         * 显示同步日志内容
         * **/
        private void showSynchLog() {
            TxtUtil txtUtil = new TxtUtil(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + Glob.LOG_NAME);
            List<LogTxt> logTxts = txtUtil.readLastLineLogTxt(10);

            if (data_log.InvokeRequired)
            {   //控件是否跨线程?如果是,则执行括号里代码
                SetShowLogCallback setShowLogCallBack = new SetShowLogCallback(showSynchLog);

                data_log.Invoke(setShowLogCallBack);
            }
            else {
                data_log.DataSource = logTxts;
            }

            //设置列名内容居中
            data_log.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;

            data_log.Columns[0].HeaderText = "更新时间";
            //设置列宽自动适应
            data_log.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
            //设置文本只可读
            data_log.Columns[0].ReadOnly = true;
            //设置文本内容居左
            data_log.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;

            data_log.Columns[1].HeaderText = "更新内容";
            //设置列宽自动适应
            data_log.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
            //设置文本只可读
            data_log.Columns[1].ReadOnly = true;
            //设置文本内容居左
            data_log.Columns[1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
        }


3,子线程去同步调用显示日志的方法
/**
         * 书写同步日志
         * **/
        private void writeSynchLog() {
            // 更新结束写同步日志,然后更新同步数据为0方便第二天再同步
            TxtUtil txtUtil = new TxtUtil(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + Glob.LOG_NAME);
            txtUtil.InsertLine(DateTime.Now.ToString("yyy-MM-dd HH:mm:ss") + "#" + "本次插入" + insertPregnancyingCount + "条在孕孕情," + insertPregnancyendCount + "条终止孕情;更新" + updatePregnancyingCount + "条在孕孕情," + updatePregnancyendCount + "条终止孕情!");
            txtUtil.Save();
            showSynchLog();
        }
分享到:
评论

相关推荐

    C# 子线程调用主线程窗体的解决方法

    由于Windows窗体控件本质上不是线程安全的。...  这种方法我没用过,因为大家推荐不要使用,所以我没去实验过,具体方法如下(摘自网上):  设置System.Windows.Forms.Control.CheckForIllegalCrossTh

    C#?副线程调用主线程的控件

     2、副线程函数中通过Control.Invoke(Delegate d)来通过委托方式来调用处理控件的方法。  线程函数: private void go() { while (b) { listBox1.Invoke(new DDO(cc));//DDO为委托类型 private delegate ...

    Java面试宝典2010版

    56、子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。 57、介绍Collection框架的结构 58、Collection框架中实现比较要实现什么接口 59、...

    最新Java面试宝典pdf版

    56、子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。 38 57、介绍Collection框架的结构 43 58、Collection框架中实现比较要实现什么接口 43 ...

    Java面试笔试资料大全

    56、子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。 38 57、介绍Collection框架的结构 43 58、Collection框架中实现比较要实现什么接口 43 ...

    JAVA面试宝典2010

    56、子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。 38 57、介绍Collection框架的结构 43 58、Collection框架中实现比较要实现什么接口 43 ...

    Java面试宝典-经典

    56、子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。 38 57、介绍Collection框架的结构 43 58、Collection框架中实现比较要实现什么接口 43 ...

    java面试题大全(2012版)

    56、子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。 38 57、介绍Collection框架的结构 43 58、Collection框架中实现比较要实现什么接口 43 ...

    Java面试宝典2012版

    56、子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。 38 57、介绍Collection框架的结构 43 58、Collection框架中实现比较要实现什么接口 ...

    java面试宝典2012

    56、子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。 42 57、介绍Collection框架的结构 47 58、Collection框架中实现比较要实现什么接口 47 ...

    Java面试宝典2012新版

    56、子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。 38 57、介绍Collection框架的结构 43 58、Collection框架中实现比较要实现什么接口 43...

    Java 面试宝典

    10、使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? .................................................................................................................................

Global site tag (gtag.js) - Google Analytics