首页 > 代码库 > .net IAsyncResult 异步操作

.net IAsyncResult 异步操作

?
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
<br>        //定义一个委托
        public delegate int DoSomething(int count);
 
        //BeginInvoke 的回调函数
        private static void Execute(IAsyncResult async)
        {
            DoSomething temp = (DoSomething)async.AsyncState;
            int sum = temp.EndInvoke(async);
            Console.WriteLine("线程结束:值为" + sum);
        }
 
    
 
        /// <summary>
        /// 判断输入的整数是不是素数
        /// </summary>
        /// <param name="candidate">输入的整数</param>
        /// <returns>为素数返回true,否则返回false</returns>
        public static bool IsPrime(int candidate)
        {
            bool retVal = true;
            //使用递增方式会更有效率,
            //但是在演示取消功能时,使用递减的数字会更好。
            //for (int i = 2; i < candidate / 2; i++)
            for (int i = candidate / 2 + 1; i > 1; i--)
            {
                if (candidate % i == 0)
                {
                    retVal = false;
                    break;
                }
            }
            return retVal;
        }
  
        private static int maseggs(int count)
        {
            int result = 0;
            for (int index = 0; index < count; index++)
            {
                if (IsPrime(index + 1))
                {
                    result++;
                }
            }
            return result;
        }
 
      static void Main(string[] args)
        {
            DoSomething hidands = new DoSomething(maseggs);
            IAsyncResult async = hidands.BeginInvoke(100000, new AsyncCallback(Execute), hidands);
            //这里还有100行代码        
            Console.WriteLine("消息获取成功");
  
 
            Console.ReadLine();
        }