c#多线程刷新界面
这个问题也不知道难倒了多少C#豪杰。比起MFC的界面刷新,在WINFORM中来实现多线程刷新真是很痛苦,故写此文。
多线程刷新界面主要用到多线程,委托,线程安全、事件等一系列高难度的C#操作。
关于委托和事件,这有一篇很易懂的文章:hi.baidu.com/anglecloudy/blog/item/a52253ee804d052f2df534ab.html
===============================================
先从一个简单的例子说起,是一个没有考虑线程安全的写法:
先在一个FORM类里面定义一个委托和事件:
protected delegate void UpdateControlText1(string str);
//定义更新控件的方法
protected void updateControlText(string str)
{
this.lbStatus.Text = str ;
return;
}
在线程函数里面加上下面的内容
UpdateControlText1 update = new
UpdateControlText1(updateControlText);//定义委托
this.Invoke(update,
"OK");//调用窗体Invoke方法
这个线程函数必须是类的线程函数,这样用很方便,但有很高的局限性,下面来说个复杂的。
==============================================
先定义一个独立的类
public
class
MoreTime
{
public
delegate
void
InvokeOtherThead(
int
i);//委托
public
InvokeOtherThead MainThread;//事件
public
void
WaitMoreTime()
{
for
(
int
i
=
0
; i
<
20
;i
++
)
{
&n
相关文档:
[System.Runtime.Serialization.DataMemberAttribute()]
public Information Archive {
get {
&n ......
今天做项目的时候,将null传入Oracle的表中,就是不成功
经过尝试得出了两个解决方案:
1.传入OracleDateTime.NULL
2.Nullable<DateTime> optime = DBNull.Value; 传入optime(开始网上找的答案是Nullable<DateTime> optime = null发现还是会报错) ......
1、用MySQLDriverCS连接MySQL数据库
先下载和安装MySQLDriverCS,地
址:
http://sourceforge.net/projects/mysqldrivercs/
在安装文件夹下面找到
MySQLDriver.dll
,然后将
MySQLDriver.dll
添加引用到项目中
注:我下载的是版本是
MySQLDriverCS-n-EasyQueryTools-4.0.1-DotNet2.0.exe
using
S ......
从ContainerControl类继承的子类作为容器窗体,可以容纳除Form类对象外的其余窗体对象。
在所有容器窗体内,最基本的就是顶级容器Form类以及面板容器Panel类。这两者的主要区别为:前者具有Windows标准框架(标题栏,最大化、最小化和关闭按钮,窗体边框,可调整尺寸),并且可以独立存在;后者只是一块区域,并且必须依附 ......