本周博客--WinForm线程初步 2014-10-31 09:15 54人阅读 评论(0) 收藏

嗯,WinForm作为一个比较程序的微软的技术已经为我们服务了很久很久,在技术不断更新的今天WinForm虽显老态龙钟但是在客户端快速开发中,它的地位还是无可取代的

今天就来分享一下WinForm中的线程使用问题.

嗯,我们的程序一般都是需要和数据库进行交互的,那么网络的交互和大数据量的后台处理如果是在主线程进行处理,那么肯定会导致程序的假死(也就是界面卡住不动),作为一个用户体验良好的程序,这一点是必须杜绝的,对于这个问题,用子线程来处理就会方便很多.

值得注意的是,线程间的切换会占用较大的CPU计算,切换的方法,时间需要自己把握.

下面给出一个示列代码:

新建一个线程 
new Thread(() =>
            {
<span style="white-space:pre">		</span>//你可以在这里操作主线程加入一个等待的图标 或者 旋转的图案,呃 我是用GDI+自己画的控件,就不贴出来了.
                byte[] by = WcfOperateService.....//这里是访问WCF服务,获取到数据
                object o = CompressionUtility.DecompressObject(by);//得到数据后,切换到主线程

                    if (this.IsHandleCreated) //判断主线程是否有句柄(PS:这个判断具体什么原理我也不清楚,嗯..希望大神能解答一下)
                    {
                        this.Invoke(new Action(() =>  //在主线程实现一个匿名委托,根据得到的数据,在界面上进行反映.
                        {
                            if (listApp.Count <= Pagecount)
                            {
                                btnPageUp.Enabled = false;
                                btnPageDown.Enabled = false;
                            }
                            else
                            {
                                btnPageDown.Enabled = true;
                                btnPageUp.Enabled = false;
                            }

                           this.ShowAppControl();
                        }));
                    }

                }

            }).Start();

嗯,以上就是..我一遍写只需要执行一遍的匿名线程+匿名委托

版权声明:本文为博主原创文章,未经博主允许不得转载。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

Oculus + Node.js + Three.js 打造VR世界

Oculus Rift 是一款为电子游戏设计的头戴式显示器。这是一款虚拟现实设备。这款设备很可能改变未来人们游戏的方式。 周五Hackday Showcase的...

3858
来自专栏Android群英传

去除 MIUI 的负一屏

982
来自专栏Python绿色通道

Python进阶三部曲线程与进程整合

Python进阶三部曲已经收工了,这些知识整合完毕后,也将宣告我们的基础部分已经学完了。

814
来自专栏陈远峰的专栏

高质量前端资源 ( 一 )

日常喜欢浏览各种技术网站包 hashnode ,stepoint, medium , hacknews , stackoverflow , github ,国内...

4850
来自专栏Kubernetes

NVIDIA/k8s-device-plugin源码分析

Author: xidianwangtao@gmail.com k8s-device-plugin内部实现原理图 在Kubernetes如何通过Devic...

4878
来自专栏hotqin888的专栏

DOC文件中法规对标系统完成

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

561
来自专栏FreeBuf

SniffAir:无线渗透测试框架

SniffAir是一个开源的无线安全框架,可帮助你轻松解析被动收集的无线数据并发起复杂的无线渗透测试。此外,它还可以处理大型的或多个pcap文件,执行交叉检查和...

322
来自专栏大数据架构师专家

运维技能武器库

Bootstrapping: Kickstart、Cobbler、rpmbuild/xen、kvm、lxc、Openstack、 Cloudstack、Open...

832
来自专栏Grace development

[还魂篇] 初来乍到如何致人于死地

初来乍到如何致人于死地,这个标题起的有点血腥恐怖了,代码写不好,吃饭吃不好。本章我们一起来回忆下那些年的“烂代码”,整理不全请见谅,以下都是我写过的?

752
来自专栏JadePeng的技术博客

【开源小软件 】Bing每日壁纸 让桌面壁纸保持更新

该小软件可以自动获取Bing的精美图片设置为壁纸,并且支持随机切换历史壁纸,查看壁纸故事。

962

扫码关注云+社区