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;

        }

    }

}

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

时间: 2024-08-02 06:59:41

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

关于如何关闭android中service中新开启的线程问题?

今天遇到一个问题,既在一个activity中设置一个按钮,点击按钮关闭service,而service中又新开启了一个线程,每隔一秒输出一句话,但是当调用按钮实现stopService方法后,service是可以关闭,但是service中开启的线程却一直在运行,原理上来讲从service的onDestory方法中关闭当前线程即可,可即便如此,还是会报错,贴下代码: 1 stopBtn.setOnClickListener(new OnClickListener() { 2 3 @Override

关于Android的asynctask-threads-limits问题:asynctask开启的线程是否有极限

http://stackoverflow.com/questions/9654148/android-asynctask-threads-limits antonyt: All AsyncTasks are controlled internally by a shared (static) ThreadPoolExecutor and aLinkedBlockingQueue. When you call execute on an AsyncTask, the ThreadPoolExecu

GCD开启子线程下载图片

//开启子线程下载图片 //1.获取一个全局串行队列    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);    __weak typeof(self) weakSelf = self; //2.把任务添加到队列中执行    dispatch_async(queue, ^{        NSURL *url = [NSURL URLWithString:_imgStr

圣杯布局,不太明白为什么后面的元素会飘上来

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="

pyqt事件过滤器的使用(eventFilter)(不太明白)

pyqt事件过滤器的使用(eventFilter) 阅读13次 2014/8/5 19:47:24 # -*- coding: cp936 -*- #由于现在不是很明白:事件过滤器的使用(eventFilter),先收藏着 from PyQt4 import QtGui, QtCore class Window(QtGui.QMainWindow): def __init__(self): QtGui.QMainWindow.__init__(self) widget = QtGui.QWidg

java 编程思想-java运算符--以前不太明白的

1.java 运算符 主要是逻辑运算符和按位运算符;移位运算符-name tecmint.txt 逻辑运算符:And(&&) ; OR(||);Not(!) 按位运算符:And(&); OR(|); XOR(^);Not(~) 移位运算符:>> ; << ; >>> 按位运算符: public void test_and(){         int a = 128;     // 0000 0000 0000 0000 0000 0000

class对象不太明白

如下:定义了一个Servletcontext的Listener,希望获取当前WEB应用的某一个文件对应的输入流 不懂为什么要这样获取?不是可以直接用servletContext.getResourceAsStream()吗?

java多线程之:创建开启一个线程的开销

---->关于时间,创建线程使用是直接向系统申请资源的,这里调用系统函数进行分配资源的话耗时不好说.---->关于资源,Java线程的线程栈所占用的内存是在Java堆外的,所以是不受java程序控制的,只受系统资源限制,默认一个线程的线程栈大小是1M(当让这个可以通过设置-Xss属性设置,但是要注意栈溢出问题),但是,如果每个用户请求都新建线程的话,1024个用户光线程就占用了1个G的内存,如果系统比较大的话,一下子系统资源就不够用了,最后程序就崩溃了.--->对操作系统来说,创建一个线

Asp.NET开启一个线程,不停的执行

using System;using System.Threading;using System.Threading.Tasks; class StartNewDemo{    static void Main()    {        while (true)        {            System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(Run