C# Winform多线程操作控件代码

首先定义一个委托,用于处理控件显示逻辑

  private delegate void UpdateLabelCallback(String info);

在定义一个利用委托来处理逻辑的方法


        private void UpdateLabel(String info)
        {
            //this.lab_fileinfo.Text = info ;

            if (this.lab_fileinfo.InvokeRequired)//如果调用控件的线程和创建创建控件的线程不是同一个则为True
            {
                while (!this.lab_fileinfo.IsHandleCreated)
                {
                    if (this.lab_fileinfo.Disposing || this.lab_fileinfo.IsDisposed)
                    {
                        return;
                    }
                }
                UpdateLabelCallback callback = new UpdateLabelCallback(UpdateLabel);
                this.lab_fileinfo.Invoke(callback, new object[] { info });
            }
            else {
                this.lab_fileinfo.Text = info;
            }

        }

最后再需要的地方,调用该方法

 UpdateLabel("正在修改标签");

完成。

由于开发中使用了webclient   这里再说说webclient的一些问题。

DownloadAsync   这个方法要慎用,由于工程有点复杂,有的地方使用这个方法会提示 webclient不支持并发i/o操作。 因此改用了Download方法

 

补充说明: DownloadFileAsync  这个方法可以使用,我们在工程里面封装了一下,命名为DownloadAsync ,出现webclient不支持并发i/o操作的问题,不是因为这个方法,而是在下载文件的时候,重用了webclient对象,在循环中重新构建webclient对象即可。 

这里,还加个小知识点,获取当前程序路径的方法代码

System.Environment.CurrentDirectory;

另外,由于iis默认不允许下载.config文件,所以客户端的配置.config无法下载,出现了问题:

HTTP 错误 404.7 - Not Found

请求筛选模块被配置为拒绝该文件扩展名。

需要修改配置,具体修改方法如下

在iis中,找到请求筛选,会列出所有设置的扩展名和规则

找到.config扩展,将其删除

重启网站   .config文件就可以正常访问了。

 

最后来个总结

1.自动更新程序,不能单独使用一个exe文件,即使是两个exe文件,负责更新作用的exe文件也不能有被更新的依赖项,否则会出现错误:“无访问已关闭的文件”
2.出现 “文件所在的卷已被外部更改,因此打开的文件不再有效。”问题,是由于.exe.config文件没有数据,字节数为0导致的。 
  解决的办法,是让iis支持.config文件下载, 1是在请求筛选中删除.config配置  2是在mine-type中添加.config 的配置,值为 text/xml
3.webclient下载多个文件的时候,必须在循环体内创建新的对象,否则会出现问题:“webclient不支持并发i/o操作”
 

 

本博客文章大多是经验积累总结,以免今后忘却,记录下来。同时感谢您的阅读,也希望能对您有所帮助。

 

转载于:https://my.oschina.net/u/2457585/blog/1528402

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值