跨线程调用窗体控件

对于跨线程调用窗体控件,用的最多且最常用的方法一般是使用委托结合Invoke实现的。下面是我曾经使用该方式而实现跨线程调用的一段代码。

 /// <summary>
        /// 委托,用以其它线程调用该委托获取当前选择的节点的文本
        /// </summary>
        /// <returns></returns>
        public delegate string GetNodeText();
        private string GetText()
        {
            return this.m_ParentNode.TreeView.SelectedNode.Text;
        }
        /// <summary>
        /// 导出数据
        /// </summary>
        /// <param name="filePath">保存文件路径</param>
        private void ExprotData(object filePath)
        {
            string nodeText = "";
            if (this.m_ParentNode.TreeView.InvokeRequired)
            {
                nodeText = (string)this.m_ParentNode.TreeView.Invoke(new GetNodeText(GetText));
            }
            else
            {
                nodeText = this.m_ParentNode.TreeView.SelectedNode.Text;
            }
            IHotspotTaskPara hotspotTaskPara = this.m_SubSystemPara.HotspotTaskManager.
                FindTask(nodeText);
            this.m_SubSystemPara.ExportResultData.ExportResultData(hotspotTaskPara, filePath as string);
        }

从代码中可以看到函数中使用到了属性InvokeRequired,该属性值指示调用方在对控件进行方法调用时是否必须调用Invoke方法,即表示调用当前控件的线程是否与窗体控件所在线程相同。

转载于:https://www.cnblogs.com/thinker-cxz/archive/2013/05/22/3092901.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值