怎么异步显示加载中 winform

 我来答
ptlouhong
2014-02-23 · 超过17用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:34万
展开全部
这里涉及到的内容有点多了哦,不过如果把这些吃下去,winform也就过关了。
首先明确需要你说的异步显示的原因,当程序中需要进行长时间的计算时,如果在主线程中进行你的窗口会卡主,显示“程序没有响应”,造成界面不友好。所以出现了主线程只做数据显示,而计算都放到其他线程中进行的思路。大致的方法如下:
在主线程中设置代理(delegate)或者事件(event)。而当子线程运算完成或者运算到某一个节点时,调用主线程窗口的代理/事件,修改主窗体的显示。这里主要涉及的知识有多线程(仅仅知道如何启动子线程就可以,不需要一开始就接触线程安全)、代理、事件。具体可以参考这篇:http://wenku.baidu.com/view/39820c366c85ec3a87c2c5ea.html
denveryang3633
推荐于2016-11-22 · TA获得超过266个赞
知道小有建树答主
回答量:342
采纳率:0%
帮助的人:155万
展开全部

//跟楼上观点基本一致,给你个处理异步线程demo的关键代码:

    TH_Login = new Thread(new ThreadStart(login));
                TH_Login.IsBackground = true;
                TH_Login.Start();

         private void login()

        {

            this.Invoke(new delegatePic(picbox_Loading_Show), panel2, panel3, picbox_Loading);

        }

        private delegate void delegatePic(Panel p1, Panel p2, PictureBox pb);

        private void picbox_Loading_Show(Panel p1, Panel p2, PictureBox pb)

        {

            p1.Enabled = false;

            p2.Enabled = false;

            picbox_Loading.Visible = true;

        }

    

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式