winform 多线程

 先上图:

 

 

说明,当单击button1时,线程休息10秒钟。但button2也可以继续响应。

 代码如下:

ExpandedBlockStart.gif View Code
 1      public   partial   class  Form3 : Form
 2      {
 3           public  Form3()
 4          {
 5              InitializeComponent();
 6           
 7           
 8          }
 9           private   void  sleep()
10          {
11 
12              Thread.Sleep( 10   *   1000 ); 
13              Console.WriteLine( " fdfdf线程50 " );
14          }
15 
16           private   void  button1_Click( object  sender, EventArgs e)
17          {
18              Action sleepActio  =   new  Action(sleep);
19              sleepActio.BeginInvoke( null null );
20             
21          }
22 
23           private   void  button2_Click( object  sender, EventArgs e)
24          {
25              Console.WriteLine( " button2 " );
26          }
27           // 既然这个WndProc是Win32中处理消息的方法的.Net版,那么我们应该在这里可以监视到所有用户操作的“消息”
28 
29       
30      }

 

 

 另一种异步回调的代码如下:

ExpandedBlockStart.gif View Code
 1     public   partial   class  Form3 : Form
 2      {
 3           public  Form3()
 4          {
 5              InitializeComponent();
 6              Debug.Listeners.Add( new  ConsoleTraceListener());
 7           
 8          }
 9           private   int  sleep()
10          {
11 
12              Thread.Sleep( 10   *   1000 ); 
13              Console.WriteLine( " fdfdf线程50 " );
14               return   10 ;
15          }
16 
17           private   void  button1_Click( object  sender, EventArgs e)
18          {
19               int  ret  =   0 ;
20              Func < int >  longTimeAction  =   new  Func < int > (sleep);
21 
22          // 这里使用了一个lambda表达式,省了不少力啊
23 
24          IAsyncResult asynResult  =  longTimeAction.BeginInvoke((result)  =>  {
25 
26              ret  =  longTimeAction.EndInvoke(result);
27              MessageBox.Show(ret.ToString());
28 
29          },  null );
30              
31         
32          }
33 
34           private   void  button2_Click( object  sender, EventArgs e)
35          {
36              Console.WriteLine( " button2 " );
37          }
38           // 既然这个WndProc是Win32中处理消息的方法的.Net版,那么我们应该在这里可以监视到所有用户操作的“消息”
39 
40          protected   override   void  WndProc( ref  Message m)
41        {
42          Debug.WriteLine(m.Msg.ToString());
43            base .WndProc( ref  m);
44       }
45      }

 

 

参考: winform多线程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值