首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于EndInvoke解决方案

2012-01-03 
关于EndInvoke这是一个MSDN上的一个简单的代码,熟悉的可以不看代码我弄不懂的是EndInvoke方法的参数Thread

关于EndInvoke
这是一个MSDN上的一个简单的代码,熟悉的可以不看代码
我弄不懂的是EndInvoke方法的参数ThreadId,result,这两个参数有什么用,该方法返回的的值是不是异步调用的方法的返回值,EndInvoke方法的参数个数取决于什么??????????
using   System;
using   System.Threading;
namespace   Examples.AdvancedProgramming.AsynchronousOperations
{
        public   class   AsyncDemo
        {
                public   string   TestMethod(int   callDuration,   out   int   threadId)
                {
                        Console.WriteLine( "Test   method   begins. ");
                        Thread.Sleep(callDuration);
                        threadId   =   Thread.CurrentThread.ManagedThreadId;
                        return   String.Format( "My   call   time   was   {0}. ",   callDuration.ToString());
                }

                public   delegate   string   AsyncMethodCaller(int   callDuration,   out   int   threadId);
                public   static   void   Main()
                {
                        int   threadId;
                        AsyncDemo   ad   =   new   AsyncDemo();
                        AsyncMethodCaller   caller   =   new   AsyncMethodCaller(ad.TestMethod);
                        IAsyncResult   result   =   caller.BeginInvoke(3000,
                                out   threadId,   null,   null);
                        Thread.Sleep(0);
                        Console.WriteLine( "Main   thread   {0}   does   some   work. ",
                                Thread.CurrentThread.ManagedThreadId);
                        string   returnValue   =   caller.EndInvoke(out   threadId,   result);//????????
                        Console.WriteLine( "The   call   executed   on   thread   {0},   with   return   value   \ "{1}\ ". ",
                                threadId,   returnValue);
                        Console.ReadLine();
                }
        }
}


我弄不懂的是EndInvoke方法的参数



[解决办法]
异步通信是不知道什么时候回来什么东西的, 那个threadID就是用来判别某个时候返回来的东西是属于谁的, 因为, 它是惟一的
[解决办法]
楼主光顾着抄代码了,
代码上面就有EndInvoke参数的说明:
-----------------------------
EndInvoke 的参数包括您需要异步执行的方法的 out 和 ref 参数(在 Visual Basic 中为 <Out> ByRef 和 ByRef)以及由 BeginInvoke 返回的 IAsyncResult。
---------------------------------

public string TestMethod(int callDuration, out int threadId)

看到没有?
out int threadId
再加上IAsyncResult,正好是:

caller.EndInvoke(out threadId, result);

热点排行