C# Winform多线程操作控件代码
C# Winform多线程操作控件代码
xiaobo137 发表于8个月前
C# Winform多线程操作控件代码
  • 发表于 8个月前
  • 阅读 16
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】买域名送云解析+SSL证书+建站!>>>   

摘要: 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操作”
 

 

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

 

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 34
博文 63
码字总数 32649
×
xiaobo137
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: