• c#还有一点不太明白,既然开启了线程为何还要委托呢?


     

    2013-07-15 09:33threadroc | 浏览 1611 次
    既然开启了线程为何还要委托呢?,开启线程本身不就是委托吗?为何委托要显示声明呢?
    Thread thread = new Thread(new ThreadStart(getAllRows));
    thread.IsBackground = true;
    thread.Start();
    比如说以上这段代码,getAllRows就是一个普通方法,根本没用委托.
    但是,我不太明白,这样也行,为何还要用委托,用委托的作用,好处在在哪里,这里不太懂,望解答.
    2013-07-15 09:49 提问者采纳
     
    用了线程,自然就不用委托了

    委托最大的好处就是,它处理完以后会有回调事件,然后进行处理

    而Thread一旦开启,就无法再控件他了
    追问:
    那我当初问的,登陆比如登陆100万个账号,取其信息采集,1个线程显然太慢了,所以要多线程,但是你当初说要用委托,是什么意思,不太懂...  望解惑,谢谢
    追答:
    委托也是一个线程。。。和Thread类似,但他可以有回调事件。。。仅此而已
    追问:
    啊,既然委托也是线程,不可以用Thread.CurrentThread.Abort()结束该委托启动的线程吗?
    如果不能的话,委托怎样停止它自己启动的线程?
    追答:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    namespace ConsoleApplication2
    {
        class Program
        {
            public delegate String TestMethod(String str);
            static void Main(string[] args)
            {
                TestMethod d=new TestMethod(Hello);
                d.BeginInvoke("Shiori"delegate(IAsyncResult ar)
                {
                    if (ar.IsCompleted)
                    {
                        TestMethod d = (TestMethod)ar.AsyncState;
                        String result = d.EndInvoke();//Hello : Shiori
                    }
                }, d);
            }
            static String Hello(String yourName)
            {
                return "hello : " + yourName;
            }
        }
    }

    异步委托的示例,你可以看看是怎么回事

  • 相关阅读:
    linux 查看磁盘空间
    nginx面试中最常见的18道题
    spring -mvc service层调用工具类配置
    IntelliJ IDEA tomcat 远程Ddbug调试
    IntelliJ IDEA tomcat 热部署
    Java HttpClient PostMethod
    Java Base64 加密/解密
    启动tomcat时cmd窗口一闪而过
    remote staging type or host is not specified
    Maven更新后本地仓库jar后缀带有 lastUpdated
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/5469274.html
Copyright © 2020-2023  润新知