C# 多线程操作界面

时间:12-09-13 栏目:C#开发 作者:kyle 评论:0 点击: 6,583 次

常常在C#里面做一些耗时任务,比如去采集一个页面。循环抓PR,抓关键词,往数据库添加上万内容等等等等。。。。

这时候不用线程程序就会处于假死状态。

用了线程,操作界面也会假死。

有神马方法来解决呢?

第一种:你的方法就在窗口Form的程序代码类里面

可以直接用线程,异步,线程池加上InvokeRequired来实现。控件的invokerequired之后使用BeginInvoke来更新界面显示。

2

这段代码中间的异步用的是委托的异步。这样就可以安全无假死的更新界面了。

第二种:就是把操作过程封装到事件中,程序使用的时候,事件通知界面改动和更新

3

先声明一个事件的参数。

再定义委托和事件

    /// <summary>
    /// 定义事件的委托
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    public delegate void RetResultEventHandler(object sender, OnRetResultEventArgs e);

再定义事件

        /// <summary>
        /// 定义事件,这里就指定了事件的参数了
        /// </summary>
        public event RetResultEventHandler OnReturnResult;

在类里面要做界面交互的时候。可以这样使用

4

然后要用的时候,在界面上做事件定义就行了。

5

这样就可以把类中想传递的消息通过事件回传回来,就可以使用了

我这里的代码就往状态栏写入了运行状态信息。达到良好的用户交互。还有各种方法可以操作界面。自己习惯用哪个就用哪个,我反正用这2种最多。也比较习惯。

你的代码写在窗口中,就用第一种,你的代码写在一个独立的类里面就可以用第二个来传递任何东西到界面显示,而且不会卡死假死。

现在对线程,异步和并行任务都小有熟悉。用起来确实爽。写起来代码,感觉越来越快。丰富的类库做支撑就是安逸。

成都SEO小五嚎2句: 本文是(成都SEO小五)辛苦弄出来的,转载成都SEO小五原创的请保留链接: C# 多线程操作界面,3Q

C# 多线程操作界面:等您坐沙发呢!

来给哥评论评论


------====== 小五公告 ======------
成都SEO小五,专注成都搜索引擎优化。
小五善长站内外优化,C#、PHP开发,中英文SEO,Google中英文和百度优化技术。欢迎群内交流。伸手党请绕路,求资源的请绕开,求问题解答的请进群内交流。开放了一个QQ交流群:160750032。加入验证时请标注任何SEO相交字眼。友情链接直接Q我,收录正常,内容大部份原创、SEO或者程序开发、网络营销、线上推广等相关行业即可。

常用工具

赞助广告

来看过哥的人