C#跨线程操作控件的线程安全方法
作者: 日期:2010-09-09
/原文 微尘工作小组ID:zhangxia http://blog.csdn.net/zhangxiaolin/archive/2009/05/06/4153600.aspx既然启动了线程,就避免不了线程之间数据传递的事情,相信你有很多种办法能解决,总之注意同步和互斥操作就好。我想说的是,工作线程处理中可能想操作某个主线程的Windows Form的Control,比如按钮,ListView等等更新工作状态之类,直接控制是不行的,不能够跨线程操作另一个线程创建的Windows Form控件。要使用委托去调用。01.using System;02.using System.Collections.Generic;03.using System.ComponentModel;04.using System.Data;05.using System.Drawing;06.using System.Text;07.using System.Windows.Forms;08.using System.Threading;09. 10.namespace JPGCompact11.{12. public partial class MainForm : Form13. {14. // 定义委托15. private delegate void DelegateWriteResult(string file, bool result);16. 17. // 与定义的委托签名相同的函数,操作主线程控件18. private void WriteResult(string fileName, bool result)19. {20. if (result)21. {22. ListViewItem thisListItem = new ListViewItem();23. thisListItem.ForeColor = Color.White;24. thisListItem.BackColor = Color.DarkGreen;25. thisListItem.SubItems[0].Text = fileName;26. thisListItem.SubItems.Add("成功");27. lvResultList.Items.Add(thisListItem);28. }29. else30. {31. ListViewItem thisListItem = new ListViewItem();32. thisListItem.ForeColor = Color.White;33. thisListItem.BackColor = Color.Red;34. thisListItem.SubItems[0].Text = fileName;35. thisListItem.SubItems.Add("失败");36. lvResultList.Items.Add(thisListItem);37. }38. }39. 40. // 启动线程41. private void btnStart_Click(object sender, EventArgs e)42. {43. Thread workThread = new Thread(new ThreadStart(CompressAll));44. // 设置为背景线程,主线程一旦推出,该线程也不等待而立即结束45. workThread.IsBackground = true;46. workThread.Start();47. }48. 49. // 线程执行函数50. private void CompressAll()51. {52. // 判断是否需要Invoke,多线程时需要53. if (this.InvokeRequired)54. {55. // 通过委托调用写主线程控件的程序,传递参数放在object数组中56. this.Invoke(new DelegateWriteResult(WriteResult),57. new object[] { item, true });58. }59. else60. {61. // 如果不需要委托调用,则直接调用62. this.WriteResult(item, true);63. }64. }65. }66.}
Tags: C#
DWR使用方法(转载)AJAX连接JS和JAVA的...
作者: 日期:2010-09-09
Java包机制二维数组的定义
作者: 日期:2010-09-09
许可证获取工具Jbuilder配置mssqlserver2000
作者: 日期:2010-09-09
[转]在C#中编写多线程应用程序,简单!
作者: 日期:2010-09-09
来自:www.kunwsoft.com
以前在使用VB来实现多线程的时候,发现有一定的难度。虽然也有这样那样的方法,但都不尽人意,但在C#中,要编写多线程应用程序却相当的简单。这篇文章将作简要的介绍,以起到抛砖引玉的作用!
.NET将关于多线程的功能定义在System.Threading名字空间中。因此,要使用多线程,必须先声明引用此名字空间(using System.Threading;)。
即使你没有编写多线程应用程序的经验,也可能听说过“启动线程”“杀死线程”这些词,其实除了这两个外,涉及多线程方面的还有诸如“暂停线程”“优先级”“挂起线程”“恢复线程”等等。下面将一个一个的解释。
Tags: C#
[转]第五篇:MVC整合Ajax(MVC案...
作者: 日期:2010-09-08
Java常见面试题(基础)
作者: 日期:2010-09-08
第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。 equals() 和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。
第十七,给我一个你最常见到的runtime exception。
ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFORMatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException
第十八,error和exception有什么区别?
Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。 equals() 和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。
第十七,给我一个你最常见到的runtime exception。
ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFORMatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException
第十八,error和exception有什么区别?
Tags: java
Oracle体系结构之-数据库、表空间、实例简介
作者: 日期:2010-09-08
C#使用SQLite数据库
作者: 日期:2010-09-08
C#使用SQLite数据库(asp.net/winform)SQLite是目前比较流行的一个开源、免费的小型的EmbeddableRDBMS(关系型数据库),用C实现,内存占用较小,支持绝大数的SQL92标准,
对各种语言的支持也比较不错,wrapper很多。
在 .NET 里面使用 SQLite, 我这里使用的wrapper是 System.Data.SQLite,它只需要一个dll,接口符合ADO.Net2.0的定义,性能也不错,NHibernate用的也是它,目前支持ADO.NET 3.5了,支持集成在 VS2005 和VS2008里面,而且支持wince,是个亮点
因为符合ADO.NET的规范,所以使用方式,基本和 SqlClient, OleDb等原生的一致
using System.Data; using System.Data.SQLite; //...using (SQLiteConnection cn = new SQLiteConnection( "Data Source=Test.db3;Pooling=true;FailIfMissing=false") ) { //在打开数据库时,会判断数据库是否存在,如果不存在,则在当前目录下创建一个 cn.Open(); using (SQLiteCommand cmd = new SQLiteCommand()) { cmd.Connection = cn; //建立表,如果表已经存在,则报错 cmd.CommandText = "Create TABLE [test] (id int, name nvarchar(20))"; cmd.ExecuteNonQuery(); //插入测试数据 for (int i = 2; i < 5; i++) { cmd.CommandText = string.Format("Insert INTO [test] VALUES ({0}, '中文测试')", i); cmd.ExecuteNonQuery(); } for (int i = 5; i < 10; i++) { cmd.CommandText = string.Format("Insert INTO [test] VALUES ({0}, 'English Test')", i); cmd.ExecuteNonQuery(); } //读取数据 cmd.CommandText = "Select * FROM [test]"; using (SQLiteDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { while (dr.Read()) { Console.WriteLine("第{0} 条:{1}", dr.GetValue(0), dr.GetString(1)); } } } } 2010-09-08zhangqi_808 --------------------------------------------------------- 一键发送本地文件,请用网易闪电邮(fm.163.com)!
对各种语言的支持也比较不错,wrapper很多。
在 .NET 里面使用 SQLite, 我这里使用的wrapper是 System.Data.SQLite,它只需要一个dll,接口符合ADO.Net2.0的定义,性能也不错,NHibernate用的也是它,目前支持ADO.NET 3.5了,支持集成在 VS2005 和VS2008里面,而且支持wince,是个亮点
因为符合ADO.NET的规范,所以使用方式,基本和 SqlClient, OleDb等原生的一致
using System.Data; using System.Data.SQLite; //...using (SQLiteConnection cn = new SQLiteConnection( "Data Source=Test.db3;Pooling=true;FailIfMissing=false") ) { //在打开数据库时,会判断数据库是否存在,如果不存在,则在当前目录下创建一个 cn.Open(); using (SQLiteCommand cmd = new SQLiteCommand()) { cmd.Connection = cn; //建立表,如果表已经存在,则报错 cmd.CommandText = "Create TABLE [test] (id int, name nvarchar(20))"; cmd.ExecuteNonQuery(); //插入测试数据 for (int i = 2; i < 5; i++) { cmd.CommandText = string.Format("Insert INTO [test] VALUES ({0}, '中文测试')", i); cmd.ExecuteNonQuery(); } for (int i = 5; i < 10; i++) { cmd.CommandText = string.Format("Insert INTO [test] VALUES ({0}, 'English Test')", i); cmd.ExecuteNonQuery(); } //读取数据 cmd.CommandText = "Select * FROM [test]"; using (SQLiteDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { while (dr.Read()) { Console.WriteLine("第{0} 条:{1}", dr.GetValue(0), dr.GetString(1)); } } } } 2010-09-08zhangqi_808 --------------------------------------------------------- 一键发送本地文件,请用网易闪电邮(fm.163.com)!
Tags: C#
(一)AJAXPro之旅---神奇的小魔盒
作者: 日期:2010-09-08
原文出处:http://www.cnblogs.com/eicesoft/archive/2007/09/10/888457.html
AJAX的技术现在红的几乎盖过了JAVA,.net本身带来的震撼,prototype,Mootools,EXTs,GWT等开源的框架的疯狂流行.似乎暗示着没有应用AJAX技术,你的Web程序等于就是落后的,但是很多时候,我们并不是那么的依赖他...
好了前面说了那么的废话,现在进入我们的主题---AJAXPro,.Net下十分流行的AJAX类库.支持.net1.1 和.Net 2.0.首先我们从http://www.codeplex.com/AjaxPro下载AJAX的包.其中包括AjaxPro.2.dll,AjaxPro.dll,AjaxPro.JSON.2.dll,AjaxPro.JSON.dll,web.config 5个文件.其中.2结尾的是应用在.Net2.0框架下的类库.(个人使用的是2.0的,以下的教程也是应用在2.0下的),web.config 是网站的配置文件.具体的以后细说.
首先,新建一个Web项目.然后在项目里添加DLL引用:
Tags: ajax
java编程规范(第三版)
作者: 日期:2010-09-08
《Java.Language.Specification.The.3rd.Edition》(中文译名:《java编程规范(第三版)》,以下简称JSL)是由sun公司一帮java牛人编写的关于java语言的规范,包括java语言中的语法,词法结构,属性、方法、类、接口、数组、泛型、异常、包、表达式、线程、锁等各种java语言的组成元素的规范和原理阐述(也包括了一些有争议的处理的说明),java语言规范是所有的java语言语法书的鼻祖,如果想学java,非常建议读一读这本书,肯定比读一些简单的语法书会有更多的收获,而且书里会有很多语法书所没有描述或描述不够详尽的东西,以及一些更深层次的东西。英文强的可以直接读原版,如果英文不怎么样,建议还是看中文翻译版,同时对有疑问之处,通过查询对应的原版原文来理解这样会更省力和高效。
Tags: java
SQL2005的数据库转换成SQL2000的数据库
作者: 日期:2010-09-08
VisualC#2010从入门到精通
作者: 日期:2010-09-08
AJAX(一):构建ASP.NETAJAX开发环境
作者: 日期:2010-09-08
学 ASP.NET AJAX (一):构建 ASP.NET AJAX 开发环境
2007-10-30 16:57:59 已被阅读: 127 发表评论
1 概述
Microsoft ASP.NET AJAX 是 Microsoft 公司对 Ajax 技术的完美封装。它能使你已快速的创建包含丰富用户体验的用户界面的 Web 页面,提供加入了跨浏览器的 ECMAScript(Javascript) 和动态 HTML(DHTML) 技术的客户端脚本,并与基于服务器的 ASP.NET 2.0 平台进行了集成。它还对 Javascript 进行了非常巧妙的面向对象方面的扩展,以提供对客户端面向对象编程的支持;提供了与 ASP.NET 紧密结合的客户端/服务器端组件、类型的自动转换;自动为客户端暴露服务器端的代码的方法;为远程 Web Service 提供本地客户端代理等许多优美的功能。使用 ASP.NET AJAX ,可以提高应用程序的用户体验和效率。
ASP.NET AJAX 由客户端脚本库和服务器端组件缓存,以提供一个健壮的开发框架。除了 ASP.NET AJAX 以外,还可以使用 ASP.NET AJAX Control Toolkit 和由社区提供的 ASP.NET AJAX Futures 的特性。
2007-10-30 16:57:59 已被阅读: 127 发表评论
1 概述
Microsoft ASP.NET AJAX 是 Microsoft 公司对 Ajax 技术的完美封装。它能使你已快速的创建包含丰富用户体验的用户界面的 Web 页面,提供加入了跨浏览器的 ECMAScript(Javascript) 和动态 HTML(DHTML) 技术的客户端脚本,并与基于服务器的 ASP.NET 2.0 平台进行了集成。它还对 Javascript 进行了非常巧妙的面向对象方面的扩展,以提供对客户端面向对象编程的支持;提供了与 ASP.NET 紧密结合的客户端/服务器端组件、类型的自动转换;自动为客户端暴露服务器端的代码的方法;为远程 Web Service 提供本地客户端代理等许多优美的功能。使用 ASP.NET AJAX ,可以提高应用程序的用户体验和效率。
ASP.NET AJAX 由客户端脚本库和服务器端组件缓存,以提供一个健壮的开发框架。除了 ASP.NET AJAX 以外,还可以使用 ASP.NET AJAX Control Toolkit 和由社区提供的 ASP.NET AJAX Futures 的特性。
Tags: ajax
打印的结果为:aaaa bbbb bbbb Jaaaa1 Jaaaa2 Jaaaa3 Jaaaa4 Jaaaa5 Jaaaa6 






