`

线程访问winform界面控件的例子

    博客分类:
  • .net
阅读更多

本例子主要是针对解决异常:

线程间操作无效: 从不是创建控件“richTextBox1”的线程访问它


关键看红色的代码,详细的查MSDN.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace WindowsFormsApplication1
{
    public delegate void MyInitDelegate(RichTextBox myRtb, string strTemp);

    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Thread t = new Thread(new ThreadStart(this.output));
            t.Start();
        }

        private void output()
        {
            string message = "pppp";
            this.richTextBox1.BeginInvoke(new MyInitDelegate(DelegateInitMethod), new object[] { this.richTextBox1, message });
        }

        public void DelegateInitMethod(RichTextBox myRtb, string strTemp)
        {
            myRtb.AppendText(System.Environment.NewLine + strTemp);
        }

    }
}

 

1
1
分享到:
评论

相关推荐

    C#WinForm,多线程快速刷新界面。

    此外,还要注意避免UI控件的跨线程访问,因为这可能导致异常。正确的方式是在UI线程中更新UI控件。 总之,C# WinForm中利用多线程技术可以有效地解决界面快速刷新问题。通过合理地使用`Task`、`async/await`以及...

    关于winform使用timer进行多线程操作的例子

    由于`OnTimedEvent`方法在后台线程上运行,直接修改UI控件可能会导致跨线程访问异常。为了解决这个问题,我们可以使用`Control.Invoke`或`Control.BeginInvoke`方法将更新UI的操作放到UI线程中执行: ```csharp if ...

    C# winform多线程模板示例,winform多线程例子,C#

    在C# WinForm应用开发中,多线程技术是解决界面卡死问题的关键。当一个耗时的操作在主线程上执行时,整个用户界面(UI)会变得无响应,这通常被称为“冻结”或“挂起”。为了防止这种情况,开发者需要将耗时任务放到...

    C# WinForm多线程防止界面假死源码

    - `Mutex`、`Semaphore`和`Monitor`等同步工具可以帮助控制线程访问共享资源,防止数据竞争问题。 7. **异常处理** - 在后台线程中抛出的异常不会被自动捕获,需要在UI线程中处理。可以使用`backgroundWorker....

    winform界面假死状态

    下面通过一个具体的例子来说明如何使用多线程和委托技术来解决Winform界面假死状态的问题。 ##### 示例代码分析 ```csharp using System; using System.Collections.Generic; using System.ComponentModel; using ...

    C#写winform调用webservice例子(经典)

    在本例中,我们将创建一个WinForm客户端,该客户端将调用一个公开的天气预报Web服务,获取特定城市的天气信息并显示在界面上。以下是一些关键步骤: 1. **创建WinForm项目**: - 打开Visual Studio,选择"新建项目...

    C# winform多线程模板示例,winform多线程例子,C#源码.zip

    由于跨线程访问UI控件是不允许的,所以需要使用这两个方法来调度到主线程执行。 2. `Mutex`、`Semaphore`和`Monitor`:用于线程同步,防止多个线程同时访问共享资源,避免数据竞争。 五、线程安全与异常处理 1. ...

    winform 阻止线程执行上下文流动源码

    在.NET Framework中,特别是对于WinForm应用,当一个线程访问UI控件时,必须在UI线程(主线程)的上下文中执行,以确保操作的正确性和同步性。否则,可能会引发“Cross-thread operation not valid”异常。 标题...

    C#子线程更新UI控件的方法实例总结

    控件类(如Label、Button等)都实现了`ISynchronizeInvoke`接口,这个接口提供了同步跨线程访问的能力。`Invoke`方法允许我们在非UI线程上执行一个委托,确保该委托在创建控件的线程(即主线程)上运行。这使得我们...

    WinForm下多线程配合Invoke函数ping百度实例。

    3. Invoke:确保非UI线程安全地更新UI元素,防止跨线程访问引发的异常。 综上所述,这个实例提供了关于如何在WinForm应用中有效利用多线程和Invoke方法的一个实际例子,对于理解和优化VB.NET应用程序的性能和用户...

    winform定时执行程序

    因此,修改控件属性(如Visible)不会引发跨线程访问问题,无需额外的线程同步。 通过以上步骤,我们可以创建一个简单的Winform应用,实现每5秒隐藏窗体中的按钮然后再显示的功能。这个例子展示了如何结合使用Timer...

    c# winform多线程的小例子

    这个小例子展示了如何在WinForm界面中实现多线程,以避免用户界面(UI)假死的问题。 首先,我们要理解为什么需要多线程。当一个耗时的操作(如累加计算)在主线程(UI线程)中运行时,它会阻塞UI更新,导致用户界面...

    小工具合集、完整代码示例、 WinForm实现自动关机、禁止WinForm窗口多开

    `Mutex`是.NET中的互斥量,它提供了一种同步机制,允许在同一时刻只有一个线程访问共享资源。在WinForm的`Program.cs`文件中,我们可以添加以下代码: ```csharp using System.Threading; static class Program { ...

    多线程委托实例

    4. 使用`Invoke`方法确保结果的更新是在UI线程上进行的,以防止跨线程访问控件引发的异常。 在这个示例中,当用户点击查询按钮时,一个新的线程被创建并开始执行数据库查询。由于查询工作在后台线程上进行,因此...

    winform基于异步委托实现多线程摇奖器

    在这个例子中,创建一个单独的线程来运行摇奖过程,防止摇奖过程中对UI界面的频繁更新导致主UI线程阻塞。 4. **委托`: 在C#中,委托是一种类型,可以存储方法的引用。在这里,我们定义了几个`MyDelegate1`到`...

    经典winfrom初学者试题

    1. **WinForm界面设计**:WinForm提供了一个可视化的界面设计器,允许开发者通过拖放控件来构建用户界面。常见的控件包括按钮(Button)、文本框(TextBox)、标签(Label)、列表视图(ListView)等。在设计器中,...

    C#多线程实时显示系统时间【VS2008源码】

    由于Windows Forms或WPF应用程序的用户界面主要由单个线程(主线程)管理,因此直接在工作线程上修改UI控件可能导致跨线程访问异常。为了解决这个问题,我们需要使用控制台的`Invoke`或`BeginInvoke`方法,确保在...

    多线程求和

    注意,由于线程安全问题,不能直接在非UI线程上更新UI控件。因此,我们使用`Invoke`方法将更新UI的操作委托回主线程执行。 为了确保线程安全,还可以使用`Monitor`, `Mutex`, `Semaphore`或`Lock`等同步机制。例如...

    WinFormHashTable最简单用法,.net hashtable ,hashtable ,hashtable用法

    在WinForm应用中,Hashtable常用于存储用户界面控件与数据之间的关联,或者在事件处理中暂存数据。例如,可以创建一个Hashtable来存储窗体控件与数据库字段的对应关系,方便数据绑定和操作。 5. **注意点** - **...

    给大家分享C#的例子代码一共298个

    - `198个经典C#WinForm实例源码(超赞)` 这个文件包含198个Windows Forms实例,这些实例可能涵盖各种控件的使用,如按钮、文本框、列表视图、菜单栏等,以及控件间的交互逻辑和数据绑定。 4. **C#入门实例**: - `...

Global site tag (gtag.js) - Google Analytics