本文转载:http://www.cnblogs.com/inforasc/archive/2009/10/12/1582110.html
在VB.net中WinForm+Backgroundworker+StatusStrip范例
Winform控件是Windows Forms中的用户界面元素,它们可以用于创建Windows应用程序的各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框、进度条等。开发人员可以使用Winform控件来构建用户界面并响应用户的操作行为,从而创建功能强大的桌面应用程序。
在C#中,连接SQLSERVER数据库时,程序对数据库的连接测试时间为15秒,这15秒中如果没有连接成功,程序是处于一种假死的状态。当然,这种假死状态不仅仅局限于这15秒的测试,还有数据库的大数据量查询,大数据量处理,大数据量下载等等,我们可以对思路进行转变,转变为利用一个后台运行进程控件来实现后台自动运行,不影响前台界面的操作,从而避免期间用户操作不了界面,程序处于假死状态。
方法2:双缓存队列处理,意思就是说,用两个队列,一个队列用于获取数据,另一个队列用于操作数据,通过信号量来处理线程调度,来取消“锁”带来的资源切换浪费,参考代码如下
在Windows Form应用中,BackgroundWorker 类允许您在单独的专用线程上运行操作。耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户界面 (UI) 似乎处于停止响应状态。如果您需要能进行响应的用户界面,而且面临与这类操作相关的长时间延迟,则可以使用 BackgroundWorker 类方便地解决问题。由于操作是异步执行的,用户可能在异步操作执行过程中关闭当前窗体,而窗体的关闭会伴随着Dispose方法的执行。如果我们注册了BackgroundWorker的RunWorkerC
简介 BackgroundWorker是.net里用来执行多线程任务的控件,它允许编程者在一个单独的线程上执行一些操作。耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户界面 (UI) 始终处于停止响应状态。如果您需要能进行响应的用户界面,而且面临与这类操作相关的长时间延迟,则可以使用BackgroundWorker类方便地解决问题。 该控件有三个事件: DoWork 、ProgressChanged 和 RunWorkerCompleted 在程序中调用RunWorkerAsync方法则会启动D
在上一篇博文中,我们提到了APM模型实现异步编程的模式,通过使用APM模型,可以简化.Net中编写异步程序的方式,但APM模型本身依然存在一些缺点,如无法得知操作进度,不能取消异步操作等。
众所周知,使用线程可以极大的提高应用程序的效率和响应性,提高用户体验,但是不可以无节制的使用线程,为什么呢?
直接使用多线程有时候会带来莫名其妙的错误,不定时的发生,有时候会让程序直接崩溃,其实BackgroundWorker 类允许您在单独的专用线程上运行操作。可以通过编程方式创建 BackgroundWorker,也可以将它从“工具箱”的“组件”选项卡中拖到窗体上。如果在 Windows 窗体设计器中创建 BackgroundWorker,则它会出现在组件栏中,而且它的属性会显示在“属性”窗口中。
先来一个加载窗体代码 1 public partial class FrmLoading : Form 2 { 3 public BackgroundWorker updateDBWorker=new BackgroundWorker(); 4 5 public Action BackgroundWorkAction 6 { 7 get; 8 set; 9 } 10
在C#程序中,经常会有一些耗时较长的CPU密集型运算,如果直接在 UI 线程执行这样的运算就会出现UI不响应的问题。解决这类问题的主要途径是使用多线程,启动一个后台线程,把运算操作放在这个后台线程中完成。但是原生接口的线程操作有一些难度,如果要更进一步的去完成线程间的通信就会难上加难。
在最近的一个Smart Client项目中,为了演示异步操作的实现,写了一个基于BackgorundWorker的例子。由于这个理基本上实现了BackgorundWorker的大部分功能:异步操作的启动、操作结束后的回调、异步操作的撤销和进度报告等等。尽管没有太多的技术含量,姑且放上来与大家分享。
采用BackgroundWorker,在后台执行程序,往往比开新线程更简单和更加安全。 简单的使用方法 System.ComponentModel.BackgroundWorker bw = new System.ComponentModel.BackgroundWorker(); //定义需要在子线程中干的事情 bw.DoWork += new System.ComponentModel.DoWorkEventHandler(bw_DoWork); //定义执行完毕后需要做的事情 bw.RunWork
GitHub:https://github.com/kwwwvagaa/NetWinformControl
抱歉各位多线程专栏托更这么久,这篇文章我们继续讲线程池的相关知识,其中将涉及到如下知识:
今天借GIS项目实现一个进度条效果,这个效果在各种管理系统中是最常见的一个效果,特别是在处理某个任务消耗的时间过长的场景,可以避免UI假死,提高用户体验。我这次用的POI数据大概有90W条,这个目录树是我为了练手,故意拆成五层的,其实从第三层到第五层原本是放在一个字段里的string型POI类型描述,将它拆解成三层树结构时损耗了部分性能,到最下面一层(图标是感叹号)类型,大概有5700多个叶子节点,加载这个资源目录树需要一段时间,这里用委托实现页面传值+BackgroundWorker实现异步弹框进度条效果。我原来在winform里面实现过,但是WPF框架里还没做过,拿这个练练手,为今后的工(qiu)作(zhi)任(mian)务(shi)做好技术储备。
有时候我们需要在程序中执行另一个程序的安装,这就需要我们去自定义msi安装包的执行过程。 比如我要做一个安装管理程序,可以根据用户的选择安装不同的子产品。当用户选择了三个产品时,如果分别显示这三个产品的安装交互UI显然是不恰当的。我们期望用一个统一的自定义UI去取代每个产品各自的UI。 平时使用msiexec.exe习惯了,所以最直接的想法就是在一个子进程中执行: msiexec.exe /qn 这样固然是能够完成任务,但是不是太简陋了? 安装开始后我们想取消这次安装怎么办? 或者我们还想要拿到一
进度条常用在加载,下载,导出一些比较耗时的地方,利用进度条能让用户看到实时进展,能有更好的用户体验……
在很多场合下, 你需要在主(UI)线程中运行一些比较耗时间的任务,比如以下的任务
单线程的winfom程序中,设置一个控件的值是很easy的事情,直接 this.TextBox1.value = "Hello World!";就搞定了,但是如果在一个新线程中这么做,比如: private void btnSet_Click(object sender, EventArgs e) { Thread t = new Thread(new ParameterizedThreadStart(SetTextBoxValue)); //当然也可以用匿名委托写成Thread t =
每一个 Windows Phone 7 应用程序在启动时多少会花上一些时间,在这个等待的时刻经常都会摆放一些启动画面 (Splash screen) 先来充充场面,以免加载时间过长而导致使用者不耐烦,而在这个启动屏幕里是一个很好的宣传页面,可以把产品的广告,作者介绍在这里显示、品牌信息都显示在这个页面里,当然时间不能太长、也不能太短,否则若这个启动屏幕跑得太快,那就没有出现的必要性了,有时后这种必要的“慢”也是一种艺术。 首先我们建立一个默认的Silverlight For windows Phone的项
---------------201504170911更新---------------
问题导读: 1.什么是flume? 2.如何安装flume? 3.flume的配置文件与其它软件有什么不同? 一、认识flume 1.flume是什么? 这里简单介绍一下,它是Cloudera的一个产品 2.flume是干什么的? 收集日志的 3.flume如何搜集日志? 我们把flume比作情报人员 (1)搜集信息 (2)获取记忆信息 (3)传递报告间谍信息 flume是怎么完成上面三件事情的,三个组件: source: 搜集信息 channel:传递信息 sink:存储信息 上面有点简练,详细可以
01应聘须知(已过时) -1.了解软件开发大环境。 -2.准备简历:不宜超过一页,永远准备中文,模板。 -3.渠道:3大网站,中华英才,前程无忧(51job最给力),智联招聘。现在还有猎聘网和100
首先介绍下Classic Async Pattern: 其实Classic Async Pattern指的就是我们常见的BeginXXX和EndXXX IAsyncResult 异步设计模式通过名为 BeginOperationName 和 EndOperationName 的两个方法来实现原同步方法的异步调用 让我们再来回顾下.net中的几个的BeginXXX 和EndXXX Stream中的BeginRead,EndRead,BeginWrite,EndWrite Socket中的BeginReceiv
当程序启动初始化时间比较长时,我们一般会设置一张图片作为启动画面,让用户知道我们的程序不是崩了,是还在跑。
大家好,又见面了,我是你们的朋友全栈君。标准控件 1 btn Button 2 chk CheckBox 3 ckl CheckedListBox 4 cmb ComboBox 5 dtp DateTimePicker 6 lbl Label 7 llb LinkLabel 8 lst ListBox 9 lvw ListView 10 mtx MaskedTextBox 11 cdr MonthCalendar 12 icn NotifyIcon 13 nud NumeircUpDown 14 pic PictureBox 15 prg ProgressBar 16 rdo RadioButton 17 rtx RichTextBox 18 txt TextBox 19 tip ToolTip 20 tvw TreeView 21 wbs WebBrowser 容器控件 1 flp FlowLayoutPanel 2 grp GroupBox 3 pnl Panel 4 spl SplitContainer 5 tab TabControl 6 tlp TableLayoutPanel 菜单和工具栏 1 cms ContextMenuStrip 2 mns MenuStrip 3 ssr StatusStrip 4 tsr ToolStrip 5 tsc ToolStripContainer 数据 1 dts DataSet 2 dgv DataGridView 3 bds BindingSource 4 bdn BindingNavigator 5 rpv ReportViewer 对话框 1 cld ColorDialog 2 fbd FolderBrowserDialog 3 fnd FontDialog 4 ofd OpenFileDialog 5 sfd SaveFileDialog 组件 1 bgw BackgroundWorker 2 dre DirectoryEntry 3 drs DirectorySearcher 4 err ErrorProvider 5 evl EventLog 6 fsw FileSystemWatcher 7 hlp HelpProvider 8 img ImageList 9 msq MessageQueue 10 pfcPerformanceCounter 11 prcProcess 12 sptSerialPort 13 sclServiceController 14 tmrTimer 印刷 1 psd PageSetupDialog 2 prd PrintDialog 3 pdc PrintDocument 4 prv PrintPreviewControl 5 ppd PrintPreviewDialog 水晶报表 1 crv CrystalReportViewer 2 rpd ReportDocument 其他 1 dud DomainUpDown 2 hsc HScrollBar 3 prg PropertyGrid 4 spl Splitter 5 trb TrackBar 6 vsc VScrollBar
Silverlight - Hello World Silverlight - Anatomy of an Application Silverlight - The VS Environment Silverlight - Content Controls Silverlight - Built-In Controls Silverlight - Width, Height, Margins, Padding, Alignment Silverlight - Using a GridSplitter Si
Silverlight性能优化 性能优化 监视性能(FPS) Silverlight的呈现性能会因指定的宿主参数和内容的复杂程度而异。 为了监视FPS的值我们在开发的过程中将EnableFrameRateCounter 属性设置为 true。这样浏览器的状态栏中显示所呈现的 Silverlight 内容的每秒帧数 (fps),以便您可以微调应用程序。 以下有两种设置EnableFrameRateCounter的方法: 1.在Object标签的属性里设置 <param name="EnableFra
C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行。一个C#程序开始于一个单线程,这个单线程是被CLR和操作系统(也称为“主线程”)自动创建的,并具有多线程创建额外的线程。
public abstract int Read(byte[] buffer, int offset, int count)
前面一篇文章介绍了异步编程的基本内容,同时也简要说明了async和await的一些用法。本篇文章将对async和await这两个关键字进行深入探讨,研究其中的运行机制,实现编码效率与运行效率的提升。
WPF应用程序在底层使用 DirectX ,无论设计复杂的3D图形(这是 DirectX 的特长所在)还是绘制简单的按钮与文本,所有绘图工作都是通过 DirectX 管线完成的。在硬件加速方面也带来了好处,DirectX 在渲染图形时会将尽可能多的工作递交给图形处理单元(GPU)去处理,GPU是显卡的专用处理器。
我现在从事的C#工控机的开发,所以接下来会写一个系列关于上位机如何和工控机/PLC/各种仪表通信。希望能帮助到有需要的人(我假设你有过windows C#编程经验的)。
WCF寄宿方式是一种非常灵活的操作,可以在IIS服务、Windows服务、Winform程序、控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者方便、高效提供服务调用。本文分别对这几种方式进行详细介绍并开发例子进行说明,以求大家对WCF寄宿的方式进行全面的认识和了解。 1、 WCF服务的IIS服务寄宿 我在我前面几篇WCF开发框架的介绍文章中,介绍过了WCF常用的一种寄宿方式,IIS服务寄宿。这种寄宿方式是最为方便的方式,而且由于服务只需要IIS运行就能自动运行起来,因此广为使用。 创建这种方式IIS
在VB.NET中,System.Threading 命名空间提供了多种与线程相关的类和接口。其中 Thread 类是用于创建和管理线程的主要类,以下是一些主要的属性和方法:
太开心了,刚刚收到微软silverlight.net的邮件. 确定了 将在本周末发布beta2. 以下是部分邮件内容 引用: There are some new features we’re announcing at this time that will be included in Beta 2: · UI Framework: Beta 2 includes improvements in animation support, error handling and re
关于线程的知识点其实是很多的,比如多线程编程、线程上下文、异步编程、线程同步构造、GUI的跨线程访问等等,本文只是从常见面试题的角度(也是开发过程中常用)去深入浅出线程相关的知识。如果想要系统的学习多线程,没有捷径的,也不要偷懒,还是去看专业书籍的比较好。
进程是应用的执行实例,可狭义理解为一个应用程序就是一个进程。启用一个应用程序时就是启动了一个进程。
转自:http://www.cnblogs.com/anding/p/5301754.html
在工作中经常遇到需要并发编程的实例,一直没有时间来整理,现在空了下来,个人整理对并发一下理解。 关于并发编程的几个误解 误解一:并发编程就是多线程 实际上多线只是并发编程的一中形式,在C#中还有很多更实用、更方便的并发编程技术,包括异步编程、并行编程、TPL数据流、响应式编程等。 误解二:只有大型服务器程序才需要考虑并发 服务器端的大型程序要响应大量客户端的数据请求,当然要充分考虑并发。但是桌面程序和手机、平板等移动端应用同样需要考虑并发编程,因为它们是直接面向最终用户的,而现在用户对使用体验的要求越来
使用线程新建窗体 项目中需要一个公用的进度条窗体.大家知道在wpf中,有两个线程,一个是UI线程,另一个是监听线程(一直监听用户的输入).如果我们后台有阻塞UI线程的计算存在,那么界面上的比如进度条什么动态的UI都会被因为阻塞而静止不动. 所以我的想法就是新起一个线程来负责进度条窗体的显示与关闭,具体实现代码如下: private static Thread th; /// /// 显示进度条 线程 ///
课程内容 Ø 读写文件 Notepad提供了快速、高效的记录手段,它具有以下的特点: Ø 自动保存,使得速记变得快速而简单。 Ø 提供每条笔记的快速预览。 Ø 可自定义每条笔记的背景色、前景色和字体大小。 Ø 可通过Email发送笔记文件。 这听上去熟悉吗?应该够熟悉吧,因为对于用户来说,除了主密码和相关的加密算法,这个应用与之前的Passwords & Secrets几乎如出一辙。但是,在实现过程中,有一个不同之处显得非常重要,这也正是本章需要讲述的。因为Notepad存储的记
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说asp是什么缩写[净含量缩写],希望能够帮助大家进步!!!
前面2篇文章介绍了线程的基础知识和线程同步,下面我们来一起认识学习下,线程池的使用。
-------------20150415原文(已更新)-------------
领取专属 10元无门槛券
手把手带您无忧上云