`

用多线程加Delegate来独立UI反应和后台事务

 
阅读更多

假设有种情况,读取1000个文件,用进度条来显示读取的进度,这时如果要进度条正常滚动,而且要主界面不卡死,也就是说要把后台的事务处理(读取1000个文件)和界面的反应分开,这时就可以用多线程和delegate来处理。

首先,定义一个delegate,在主线程中也就是button的点击事件中新建一个子线程

Thread tr=new Thread(new ThreadStart(method));

tr.isbackgroundthread=true;

tr.start();

然后,在method的方法中也就是在读取文件的过程中应用delegate来触发界面进度条的更新

dele=new StartProgressEventHandle(StartProgress);

dele.invoke();

最后,在StartProgress的方法中更新进度条

StartProgress()

{

if(this.isactiverequired)
{

this.invoke(new StrartProgressEventHandle(StratProgress));
}

else

{

//更新进度条
}
}

分享到:
评论

相关推荐

    多线程,Delegate 委托带参数的方法

    本文将深入探讨“多线程”、“Delegate委托”以及“带参数的方法”,并结合“Win简单委托”示例来阐述它们如何协同工作。 ### 多线程 多线程是指在一个应用程序中同时执行多个任务。在Windows环境中,每个线程都有...

    c#多线程中子线程动态改变ui控件

    C#多线程中子线程动态改变UI控件 在桌面应用程序中,控制UI界面是一个非常重要的任务。特别是在C#多线程编程中,子线程更新UI控件是一个常见的问题。本文将总结C#子线程更新UI控件的方法,介绍两种常用的方法,以便...

    VB.Net-C#多线程Thread-代理委托delegate编程

    最近收集的VB.Net-C#多线程Thread-代理委托delegate编程。文章列表: c#.net多线程同步.txt C#WebBrowser页面与WinForm交互技巧一.txt C#多线程编程-多细全.txt C#多线程编程简单实例.txt C#多线程窗体控件安全访问....

    用多线程更新UI

    本文将深入探讨“用多线程更新UI”这一主题,重点关注C#语言下如何通过多线程避免UI访问冲突,提高程序响应速度。 首先,我们需要理解为什么需要在UI线程以外的线程进行更新。当UI操作(如添加控件、改变文本或刷新...

    运用 委托和事件解决UI线程和后台线程问题

    以下是如何运用委托和事件来解决UI线程和后台线程问题的步骤: 1. **定义委托**:首先,我们需要定义一个委托类型,这个委托将代表我们的回调方法。例如,我们可以创建一个名为`OperationCompleted`的委托,它接受...

    C# 线程更新UI界面

    在C#编程中,线程是执行代码的基本单元,它允许程序同时执行多个任务,从而提高了应用程序的响应性和效率。特别是在UI(用户界面)开发中,为了保证界面的流畅性,通常我们会将耗时操作放在后台线程进行,而更新UI则...

    (Swift)SceneDelegate中启动UI

    在Swift编程语言中,Scene...总的来说,SceneDelegate在Swift应用中起着关键作用,它是构建和管理UI的重要入口点。理解并熟练运用SceneDelegate的各项方法,能够帮助开发者更好地控制应用的生命周期,提升用户体验。

    C#WinForm跨线程更新UI的四种方法

    当后台线程需要更新UI时,首先创建一个Delegate,然后调用控件的Invoke方法,这样可以确保在UI线程中安全地执行更新操作。 示例代码: ```csharp private delegate void UpdateTextDelegate(string text); ...

    C#多线程委托

    "C#多线程委托"是一个关于如何在C#中使用多线程和委托来实现后台任务和更新用户界面的实例。理解并熟练运用这些技术,可以提升应用程序的性能和用户体验,尤其是在处理耗时操作时。在Windows Forms应用中,正确地...

    VBnet 分线程窗体,主线程卡死任然报告方法的进度值到UI窗体上面

    多线程允许程序同时执行多个独立的任务,其中一个线程(通常为主线程)负责处理用户界面,另一个或多个线程则负责后台计算或其他不需与UI交互的工作。在VB.NET中,我们可以使用`System.Threading.Thread`类来创建新...

    解决winform编程中使用线程界面卡死的案例

    在多线程环境中,我们可以使用委托将UI更新的方法传递给后台线程,然后在后台线程执行完毕后安全地回调到主线程来更新UI。 以下是一个简单的示例: ```csharp using System; using System.Windows.Forms; using ...

    c#多线程与ui响应

    ### C#多线程与UI响应 在C#开发中,多线程是处理复杂任务、提高程序响应性的重要手段之一。特别是在涉及图形用户界面(GUI)的应用程序中,合理地利用多线程可以显著提升用户体验。下面将详细介绍C#中的多线程技术...

    (OC)SceneDelegate中启动UI

    然而,随着多窗口、分屏以及暗黑模式等新特性的加入,Apple需要一个更灵活的框架来处理不同的场景(Scene)。于是,`SceneDelegate`应运而生,它为每个独立的场景提供了一个代理对象,使得开发者可以针对每个场景...

    DevExpress的GridView动态绑定数据集,多线程动态修改UI自动刷新

    总之,DevExpress的GridView结合动态绑定数据集和多线程更新UI,可以构建高性能且响应迅速的用户界面。在实际开发中,理解这些技术并正确应用它们,对于提升用户体验至关重要。同时,监控运行状态,如打印运行状态,...

    C#用了多线程界面卡死

    当UI线程调用的API可能会导致阻塞时间超过30毫秒时(例如访问CD-ROM等较慢的外部设备或进行远程调用等),应考虑使用多线程。30毫秒这个阈值是因为人眼可以感知到的最小延迟约为30毫秒,如果超过这个时间,用户就会...

    c#子线程操作UI控件的简单委托 包含带参数和不带参数源码

    本文将深入探讨如何在C#中使用委托实现子线程对UI控件的操作,包括带参数和不带参数的场景,并提供源码实例。 1. 跨线程操作UI控件的原理: 在多线程环境中,每个线程都有自己的上下文,而UI控件只在其创建的线程...

    VB的多线程

    5. **异步编程模型**:除了使用Thread类,VB还提供了BackgroundWorker组件,它简化了在UI线程上执行后台操作的过程,支持进度报告和取消操作。 6. **线程池**:线程池是一种优化线程创建和销毁开销的方式,VB.NET中...

    c# 委托访问listbox多线程操作

    在本文档中,我们探讨了如何使用 C# 中的委托和多线程技术来安全地更新 ListBox 控件。这种技术不仅可以提高程序的响应性和性能,还可以确保 UI 更新的正确性。理解这些概念对于开发复杂的、具有高度交互性的应用...

    .NET多线程详解及源码

    本文将深入探讨.NET多线程的基础知识、WinForm多线程编程、线程池的使用以及同步机制,同时涉及Web和IIS中线程的运用。 1. **基础篇 - 创建线程** - **使用Thread类**:通过`ThreadStart`委托指定线程执行的方法,...

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

    为了解决这个问题,开发者通常会采用多线程技术来分离计算密集型任务和界面更新,使得程序能够流畅运行。本文将深入探讨如何在C# WinForm中利用多线程实现界面快速刷新。 首先,我们需要理解Windows Forms(WinForm...

Global site tag (gtag.js) - Google Analytics