C#完成 使用异步线程定时更新窗体标签内容,并对标签内容进行求和显示
程序员文章站
2023-11-25 23:54:16
这是我在面试过程中遇到的一个小测试,很可惜,当天未能圆满完成,虽然第二天经过实际测试已经OK 了,但学无止境,继续努力吧,特将此代码贴在这里,供以后学习使用; 窗体界面如下: ......
这是我在面试过程中遇到的一个小测试,很可惜,当天未能圆满完成,虽然第二天经过实际测试已经ok 了,但学无止境,继续努力吧,特将此代码贴在这里,供以后学习使用;
1 namespace mytest 2 { 3 public partial class form1 : form 4 { 5 public form1() 6 { 7 initializecomponent(); 8 } 9 10 private void button1_click(object sender, eventargs e) 11 { 12 timer1.interval = 200; 13 timer1.enabled = true; 14 15 } 16 17 public delegate void mydelegate( ); 18 public mydelegate myway; 19 public mydelegate myway2; 20 private void check(object obj) 21 { 22 myway(); 23 24 } 25 private void check2(object obj) 26 { 27 myway2(); 28 29 } 30 private void add1( ) 31 { 32 33 int i = convert.toint32(label1.text); 34 i++; 35 if (!this.ishandlecreated || this.isdisposed) return; 36 if (invokerequired) 37 { 38 this.invoke((methodinvoker)delegate 39 { 40 41 label1.text = i.tostring(); 42 43 }); 44 } 45 else 46 { 47 48 } 49 50 } 51 52 private void add2() 53 { 54 55 int i = convert.toint32(label2.text); 56 i++; 57 if (!this.ishandlecreated || this.isdisposed) return; 58 if (invokerequired) 59 { 60 this.invoke((methodinvoker)delegate 61 { 62 63 label2.text = i.tostring(); 64 65 int j = convert.toint32(label1.text); 66 j = j + i; 67 label3.text = j.tostring(); 68 69 }); 70 } 71 else 72 { 73 74 } 75 76 } 77 78 79 80 81 private void form1_load(object sender, eventargs e) 82 { 83 myway += new mydelegate(add1); 84 myway2 += new mydelegate(add2); 85 } 86 87 88 89 private void timer1_tick(object sender, eventargs e) 90 { 91 92 93 94 threadpool.queueuserworkitem(new waitcallback(check), null);//执行线程池 95 threadpool.queueuserworkitem(new waitcallback(check2), null);//执行线程池 96 } 97 } 98 }
窗体界面如下: