在WinForm中使用匿名委托的小技巧

本文最后更新于$day天前,文中所描述的信息可能已发生改变。

现在多线程时代,基本不会用单线程执行代码,如果使用多线程,在WinFrom中很多需要注意的事项,例如必须在主线程才能使用窗体代码。必须在主线程上执行委托。怎样写的委托更好更优美,记录一下我写委托的几个方法,和在Winfrom中异步执行代码的方法。EasyHttpClient 是我平时封装Http方法的一个类。可以忽略。

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
            string html = string.Empty;
//使用Action 封装一个方法,使用了lambda 表达式
Action action = () =>
{
html = new EasyHttpClient().Get("http://www.wugufen.com/").html;
};

//异步执行这个方法
var asyn = action.BeginInvoke((IAsyncResult ir) =>
{
//使用匿名方法返回主窗体线程
this.BeginInvoke((Action)delegate
{
textBox2.Text = html;
});

//使用匿名方法+Lambda表达式。
this.BeginInvoke(new Action(() =>
{
textBox2.Text = html;
}));
}, null);
if (!asyn.IsCompleted)
{
MessageBox.Show("还没完成!");
}






//一个匿名winfrom异步带参数匿名方法
this.BeginInvoke(new Action<int>(delegate (int value)
{


}), 参数);