分类目录

链接

友情链接

统计信息

  • 日志总数:116篇
  • 评论总数:185条
  • 分类总数:11个
  • 标签总数:391个
  • 友情链接:0个
  • 网站运行:3289天

2019年十二月
« 10月    
 1
2345678
9101112131415
16171819202122
23242526272829
3031  
>
现在位置:    首页 > c# > 正文

c# 利用invoke 跨线程调用UI控件

c# 暂无评论

有时候,我们在C#中 使用多线程时但又想更新数据到UI中怎么办呢?我们知道,跨线程访问UI是不被允许的。所以今天我们来解决这个问题。

核心词:invoke,这是C# 对像中的一个方法,这个跟委托方法delegate 比起来 更容易使用.我们看代码:

我们在UI FORM 对象中 添加一个以下的方法,这个方法 即可以使用这个FORM 内部的对象,又能被外部调用,是不是正是我们想要的东西呢?

FORM1 invoke的代码:

       //远程获取图片
        public  byte[] Tinvoke() {

            byte[] img = new byte[100];

            try{
                this.Invoke(new EventHandler(delegate
                {

                    img = GetPicByFrame();


                }));

               
            }
            catch (Exception e)
            {

                return img;
            }

            return img;
        }

外部调用:

try
            {
               #新线程
                new Thread(new ThreadStart(delegate {
                
                    byte[] img2 = new byte[1];
                    while (true)
                    {

                        if (common.webCamStatusOpen == false)
                        {

                            break;
                        }
                        #这里就是我们直接调用FORM的invoke方法。
                        img2 = common.app.Tinvoke();

                        Send(img2);

                        Thread.Sleep(500);

                    }

                })).Start();


            }
            catch (Exception FileIOException)
            {
            
                    console.writeLine(fileIOException->Message);

            }

这样就可以实现 在跨线程的情况何调用并使用UI,有时候这个功能非常之重要,因为我们在跨线程时更新UI或其它处理是非常之有用的。。

本文版权归企业网站建设,做网站,网站建设,php网站建设,dedecms建站,ecshop二次开发,html空间,网站修改所有,转载引用请完整注明以下信息:
本文作者:admin
本文地址:c# 利用invoke 跨线程调用UI控件 | 企业网站建设,做网站,网站建设,php网站建设,dedecms建站,ecshop二次开发,html空间,网站修改

抱歉!评论已关闭.