C# winform跨线程操作控件的实现

 更新时间:2022年06月08日 14:52:17   作者:xwwwill  
本文主要介绍了C# winform跨线程操作控件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前提:当我们使用Winform开发的时候,经常会遇到:System.InvalidOperationException:“线程间操作无效: 从不是创建控件“xxxx”的线程访问它。”

原因:发生次异常的原因是因为winform在渲染UI界面和操作界面数据的时候使用的是同一个线程。当我们创建另外一个线程,去操作此线程的UI控件,会导致线程不安全。winform为了防止线程不安全,因此杜绝了这个跨线程操作,并且抛出异常。

异常举例:创建两个控件,一个是按钮控件,一个是lable控件

private void button1_Click(object sender, EventArgs e)
        {
            Thread thread = new Thread(()=>
            {
                if (this.InvokeRequired)
                {
                    this.Invoke(new Action(() =>
                    {
                        lable1.Text = "Hello Thread!";
                    }));
                }
            }
            );
            thread.IsBackground = true;
            thread.Start();
        }

当执行此按钮的时候,会导致跨线程操作异常。

解决方案:

使用InvokeRequired属性,判断是否是线程安全。

if (this.InvokeRequired) 
{
    this.Invoke(new Action(() =>
    {
        lable1.Text = "Hello World!";
    }));
}
else
{
    lable1.Text = "Hello World!";
}

到此这篇关于C# winform跨线程操作控件的实现的文章就介绍到这了,更多相关C# winform跨线程操作控件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#控制台程序中处理2个关闭事件的代码实例

    C#控制台程序中处理2个关闭事件的代码实例

    这篇文章主要介绍了C#控制台程序中处理2个关闭事件的代码实例,本文中的2个关闭事件是指Ctrl+C事件和窗口的关闭按钮事件,需要的朋友可以参考下
    2014-09-09
  • 详解WPF双滑块控件的使用和强制捕获鼠标事件焦点

    详解WPF双滑块控件的使用和强制捕获鼠标事件焦点

    这篇文章主要为大家详细介绍了WPF中双滑块控件的使用和强制捕获鼠标事件焦点的实现,文中的示例代码讲解详细,感兴趣的可以尝试一下
    2022-07-07
  • C#使用LINQ查询操作符实例代码(一)

    C#使用LINQ查询操作符实例代码(一)

    这篇文章介绍了C#使用LINQ查询操作符的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Unity实现相机截图功能

    Unity实现相机截图功能

    这篇文章主要为大家详细介绍了Unity实现相机截图功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • C#实现跨线程操作控件方法

    C#实现跨线程操作控件方法

    这篇文章主要介绍了C#实现跨线程操作控件方法,主要采用异步访问方式实现,需要的朋友可以参考下
    2014-10-10
  • C#编程自学之开篇介绍

    C#编程自学之开篇介绍

    这篇是一篇关于C#编程自学的入门文章,学习C#的开始,开启了C#的奇妙之旅,感兴趣的小伙伴们可以持续关注系列文章。
    2015-10-10
  • 详解C# 结构体

    详解C# 结构体

    这篇文章主要介绍了C# 结构体的的相关资料,文中示例代码非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • C#实现将32位MD5摘要串转换为128位二进制字符串的方法

    C#实现将32位MD5摘要串转换为128位二进制字符串的方法

    这篇文章主要介绍了C#实现将32位MD5摘要串转换为128位二进制字符串的方法,涉及C#字符串遍历、加密与转换相关操作技巧,需要的朋友可以参考下
    2017-04-04
  • Entity Framework主从表数据加载方式

    Entity Framework主从表数据加载方式

    这篇文章介绍了Entity Framework主从表数据加载方式,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • C#制作二维柱状图方法

    C#制作二维柱状图方法

    在本文里小编为各位分享的是关于C#制作二维柱状图方法和步骤,需要的读者们学习下。
    2018-12-12

最新评论