首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >屏幕截图问题

屏幕截图问题
EN

Stack Overflow用户
提问于 2012-02-21 21:58:15
回答 3查看 166关注 0票数 0

我有一个按钮,点击一下,它就会截取一个屏幕截图,并显示在我的图片框中。我不会遇到这个代码的问题:

代码语言:javascript
复制
private void btnScreenShot_Click(object sender, EventArgs e)
        {

            btnSave.Visible = true;
            sendto_bmpbox.Image = CaptureScreen();
        }

然而,当我循环时,整个表单冻结,我不能点击任何东西:

代码语言:javascript
复制
private void btnScreenShot_Click(object sender, EventArgs e)
        {
            // Freezes here
            btnSave.Visible = true;
            while(flag == 0)
            {
                 sendto_bmpbox.Image = CaptureScreen();
            }
        }

如何解决此问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-21 21:59:58

那是因为你的while()是无限的。是什么使flag在不同的捕获中发生变化?

如果你想无限地捕捉屏幕-永远不要使用主线程来做这类事情,因为它会导致它挂起并阻止你的应用程序更新UI。

使用BackgroundWorker class来做类似的事情,您可以使用this示例。

票数 2
EN

Stack Overflow用户

发布于 2012-02-21 22:06:50

代码语言:javascript
复制
private void button1_Click(object sender, EventArgs e)
        {
            btnSave.Visible = true;

            Thread thread = new Thread(new ThreadStart(threadWork));
            thread.Start();
        }

        int flag = 0;

        private void threadWork()
        {
            while (flag == 0)
            {
                UpdateImage();
            }
        }

        private void UpdateImage()
        {
            if (this.InvokeRequired)
            {
                this.Invoke(UpdateImage);
            }
            else
            {
                sendto_bmpbox.Image = CaptureScreen();
            }
        }
票数 2
EN

Stack Overflow用户

发布于 2012-02-21 22:03:38

尝试在循环中使用Application.DoEvents。我想这能帮你..。

代码语言:javascript
复制
private void btnScreenShot_Click(object sender, EventArgs e)
        {
            // Freezes here
            btnSave.Visible = true;
            while(flag == 0)
            {
                 Application.DoEvents();
                 sendto_bmpbox.Image = CaptureScreen();
            }
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9378826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档