天天看点

.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

<code>&lt;br&gt;       </code><code>//定义一个委托</code>

<code>        </code><code>public</code>

<code>delegate</code> <code>int</code> <code>dosomething(</code><code>int</code>

<code>count);</code>

<code>        </code><code>//begininvoke 的回调函数</code>

<code>        </code><code>private</code>

<code>static</code> <code>void</code> <code>execute(iasyncresult async)</code>

<code>        </code><code>{</code>

<code>            </code><code>dosomething temp = (dosomething)async.asyncstate;</code>

<code>            </code><code>int</code>

<code>sum = temp.endinvoke(async);</code>

<code>            </code><code>console.writeline(</code><code>"线程结束:值为"</code>

<code>+ sum);</code>

<code>        </code><code>}</code>

<code>   </code> 

<code>        </code><code>/// &lt;summary&gt;</code>

<code>        </code><code>/// 判断输入的整数是不是素数</code>

<code>        </code><code>/// &lt;/summary&gt;</code>

<code>        </code><code>/// &lt;param name="candidate"&gt;输入的整数&lt;/param&gt;</code>

<code>        </code><code>/// &lt;returns&gt;为素数返回true,否则返回false&lt;/returns&gt;</code>

<code>static</code> <code>bool</code> <code>isprime(</code><code>int</code>

<code>candidate)</code>

<code>            </code><code>bool</code>

<code>retval =</code><code>true</code><code>;</code>

<code>            </code><code>//使用递增方式会更有效率,</code>

<code>            </code><code>//但是在演示取消功能时,使用递减的数字会更好。</code>

<code>            </code><code>//for (int i = 2; i &lt; candidate / 2; i++)</code>

<code>            </code><code>for</code>

<code>(</code><code>int</code>

<code>i = candidate / 2 + 1; i &gt; 1; i--)</code>

<code>            </code><code>{</code>

<code>                </code><code>if</code>

<code>(candidate % i == 0)</code>

<code>                </code><code>{</code>

<code>                    </code><code>retval =</code><code>false</code><code>;</code>

<code>                    </code><code>break</code><code>;</code>

<code>                </code><code>}</code>

<code>            </code><code>}</code>

<code>            </code><code>return</code>

<code>retval;</code>

<code> </code> 

<code>static</code> <code>int</code> <code>maseggs(</code><code>int</code>

<code>count)</code>

<code>result = 0;</code>

<code>index = 0; index &lt; count; index++)</code>

<code>(isprime(index + 1))</code>

<code>                    </code><code>result++;</code>

<code>result;</code>

<code>      </code><code>static</code>

<code>void</code> <code>main(</code><code>string</code><code>[] args)</code>

<code>            </code><code>dosomething hidands =</code><code>new</code>

<code>dosomething(maseggs);</code>

<code>            </code><code>iasyncresult async = hidands.begininvoke(100000,</code><code>new</code>

<code>asynccallback(execute), hidands);</code>

<code>            </code><code>//这里还有100行代码        </code>

<code>            </code><code>console.writeline(</code><code>"消息获取成功"</code><code>);</code>

<code>            </code><code>console.readline();</code>