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# 串口扫描枪读取数据的实现

    C# 串口扫描枪读取数据的实现

    本文主要介绍了C# 串口扫描枪读取数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-04-04
  • 基于WPF开发txt阅读器

    基于WPF开发txt阅读器

    这篇文章主要为大家详细介绍了如何基于WPF开发一个简单的txt阅读器,可以满足文本文件的读写和保存,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-06-06
  • C#窗体实现点餐系统

    C#窗体实现点餐系统

    这篇文章主要为大家详细介绍了C#窗体实现点餐系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • 用c# 自动更新程序

    用c# 自动更新程序

    这篇文章主要介绍了用c# 自动更新程序的代码示例,帮助大家更好的理解和使用c#编程语言,感兴趣的朋友可以了解下
    2020-11-11
  • Unity3D使用UGUI开发原生虚拟摇杆

    Unity3D使用UGUI开发原生虚拟摇杆

    这篇文章主要为大家详细介绍了Unity3D使用UGUI开发原生虚拟摇杆,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • 基于Avalonia实现自定义弹窗的示例详解

    基于Avalonia实现自定义弹窗的示例详解

    对于使用avalonia的时候某些功能需要到一些提示,比如异常或者成功都需要对用户进行提示,所以需要单独实现弹窗功能,并且可以自定义内部组件,这一期将手动实现一个简单的小弹窗,并且很容易自定义,希望大家喜欢
    2023-02-02
  • 在WinForm中发送HTTP请求的实现方法

    在WinForm中发送HTTP请求的实现方法

    下面小编就为大家带来一篇在WinForm中发送HTTP请求的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • 使用SkiaSharp在C#中如何生成图像

    使用SkiaSharp在C#中如何生成图像

    本文介绍了如何使用SkiaSharp库在C#中生成和处理图像,通过创建一个空白图像并绘制一个正方形,我们展示了如何使用SkiaSharp的基本功能,如创建画布、绘制图形和保存图像
    2025-01-01
  • C#中的不可变数据类型介绍(不可变对象、不可变集合)

    C#中的不可变数据类型介绍(不可变对象、不可变集合)

    这篇文章主要介绍了C#中的不可变数据类型介绍(不可变对象、不可变集合),本文讲解了不可变对象、自定义不可变集合、Net提供的不可变集合、不可变优点、不可变对象缺点等内容,需要的朋友可以参考下
    2015-04-04
  • c# 实现KMP算法的示例代码

    c# 实现KMP算法的示例代码

    这篇文章主要介绍了c# 实现KMP算法的示例代码,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2020-11-11

最新评论