http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 6813|回复: 8

[毕业生提问] c#制作滤镜效果 ProgressBar 加载问题

[复制链接]
发表于 2015-2-2 17:38:43 | 显示全部楼层 |阅读模式
1金钱
我的progressbar是一个动态的gif图片,这个滤镜处理的时候会延迟很长时间,所有我想加个ProgressBar 显示等待的状态,但是点击完按钮以后,比如说要转成黑白效果,转换的期间这个动态的gif图片就停止不动了,直接转换完成后又开始动,这个改怎么解决,是另开一个线程来处理么,但是另开一个线程怎么跟面板上的progressbar关联起来。 刚搞c#,这方面还有点弱,求路过的大神指导一二。我是手动添加的picbox;


            ThreadStart ep = new ThreadStart(createProgressBar);
            thread = new Thread(ep);
            thread.Start();



private void createProgressBar()
        {
            pic = new PictureBox();
            pic.Size = new Size(300, 15);
            pic.Location = new Point(220, 30);
            pic.LoadAsync("file:///d:/01.gif");
            this.Controls.Add(pic);                       /// 这里会报错,但是我也不知道该怎么搞
            pic.Visible = true;

        }
QQ截图20150202173035.png

最佳答案

查看完整内容

private void createProgressBar() { pic = new PictureBox(); pic.Size = new Size(300, 15); pic.Location = new Point(220, 30); pic.LoadAsync("file:///d:/01.gif"); //this.Controls.Add(pic); /// 这里会报错,但是我也不知道该怎么搞 this.Invoke(new Action(() => //在多线程的时候,要对主界面操作, ...


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2015-2-2 17:38:44 | 显示全部楼层
private void createProgressBar()
        {
            pic = new PictureBox();
            pic.Size = new Size(300, 15);
            pic.Location = new Point(220, 30);
            pic.LoadAsync("file:///d:/01.gif");
            //this.Controls.Add(pic);                       /// 这里会报错,但是我也不知道该怎么搞
            this.Invoke(new Action(() =>   //在多线程的时候,要对主界面操作,需要进行线程切换。
            {
                this.Controls.Add(pic);
                pic.Visible = true;
            }));
           

        }
回复

使用道具 举报

 楼主| 发表于 2015-2-2 17:48:23 | 显示全部楼层
自己顶一下
回复

使用道具 举报

发表于 2015-2-3 08:15:16 | 显示全部楼层
在线程里操作是要使用委托的
回复

使用道具 举报

 楼主| 发表于 2015-2-3 16:24:01 | 显示全部楼层
dcdqn 发表于 2015-2-2 17:38
private void createProgressBar()
        {
            pic = new PictureBox();

嗯 谢谢咯 这个问题解决了 但是根本问题还是没解决,这样子 在转换的过程中gif的图片还是停止动画了。貌似我添加的这个线程没什么效果
回复

使用道具 举报

发表于 2015-2-4 11:28:13 | 显示全部楼层
你应该是要把需要长时间处理的事情放到多线程里面去执行,比如你说的转成黑白效果,放到线程里面去执行,如果要更新界面的时候再切换到主界面的线程来更新。即调用invoke
回复

使用道具 举报

 楼主| 发表于 2015-2-4 14:02:33 | 显示全部楼层
dcdqn 发表于 2015-2-4 11:28
你应该是要把需要长时间处理的事情放到多线程里面去执行,比如你说的转成黑白效果,放到线程里面去执行,如 ...

嗯  我写个小demo试试  难者不会 会者不难哎- - 三克油
回复

使用道具 举报

 楼主| 发表于 2015-2-4 14:49:34 | 显示全部楼层
dcdqn 发表于 2015-2-4 11:28
你应该是要把需要长时间处理的事情放到多线程里面去执行,比如你说的转成黑白效果,放到线程里面去执行,如 ...

谢谢你了啊  按照你说的 解决了 真棒!
回复

使用道具 举报

发表于 2015-2-8 10:48:08 | 显示全部楼层
受教了学习中……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-24 13:51

© 2014-2021

快速回复 返回顶部 返回列表