1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Linq;
using
System.Text;
using
System.Windows.Forms;
using
System.Threading;
namespace
LoginIn
{
public
partial
class
Form1 : Form
{
delegate
void
MyDelegate(
string
name,
string
code);
delegate
void
SetTipDelegate(
string
tip);
public
Form1()
{
InitializeComponent();
}
private
void
button1_Click(
object
sender, EventArgs e)
{
string
name = txtName.Text;
string
code = txtCode.Text;
//调用委托,用新线程校验用户名、密码
MyDelegate myDelegate =
new
MyDelegate(CheckUser);
myDelegate.BeginInvoke(name, code,
null
,
null
);
}
void
CheckUser(
string
name,
string
code)
{
Thread.Sleep(2000);
if
(name ==
"1"
&& code ==
"1"
)
{
SetTip(
"成功"
);
}
else
{
SetTip(
"失败"
);
}
}
void
SetTip(
string
tip)
{
//是否调用Invoke方法
if
(lbTip.InvokeRequired)
//if(!从创建控件“lbTip”的线程访问它)
{
//调用委托
SetTipDelegate myDelegate =
new
SetTipDelegate(SetTip);
Invoke(myDelegate, tip);
}
else
{
lbTip.Text = tip;
}
}
private
void
timer1_Tick(
object
sender, EventArgs e)
{
button1.Text = DateTime.Now.ToString();
}
}
}
|
2015年8月3日 16:49:27,更新简写版
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
protected
void
button1_Click(
object
sender,EventArgs e)
{
string
userName = txtName.Text;
string
userCode = txtCode.Text;
Func<
string
,
string
,
string
> d1 = (name, code) =>
(name ==
"1"
&& code ==
"1"
) ?
"成功"
:
"失败"
;
d1.BeginInvoke(userName,userCode,ar=>
{
string
result= d1.EndInvoke(ar);
Action<
string
> action1=data=>label1.Text=data;
Invoke(action1,result);
},
null
);
}
|
没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。
本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/6697736.html,如需转载请自行联系原作者