C# 是多任务吗?

C# 是多任务吗?,c#,.net,multithreading,C#,.net,Multithreading,考虑下面的程序 myThread = new Thread( new ThreadStart( delegate { Method1(); Method2();

考虑下面的程序

myThread = new Thread(
                        new ThreadStart(
                            delegate
                            {
                                Method1();
                                Method2();
                            }
                            )
                            );

是两个线程被并行调用(多任务处理)还是一个线程顺序调用方法?

这是一个线程

Method1()
结束之前不会调用
Method2()

如果希望
Method1()
Method2()
分别位于单独的线程中,可以执行以下操作:

myThread1 = new Thread(new ThreadStart(Method1));
myThread2 = new Thread(new ThreadStart(Method2));
并启动它们:

myThread1.Start();
myThread2.Start();
现在两者都可以同时运行

有用资源:

是不是有两个线程在运行 称为并行(多任务)

您可以根据经验进行检查:通过以下方式声明methoda
Method1
Method2

public void Method1 () {
    for (int i = 0; i < 10; i++) {
        System.Console.WriteLine ("Method1: {0}", i);
        Thread.Sleep (2000); // 2 seconds
    }
}

public void Method2 () {
    for (int i = 0; i < 10; i++) {
        System.Console.WriteLine ("Method2: {0}", i);
        Thread.Sleep (2000); // 2 seconds
    }
}
可以清楚地看到,这个匿名方法将执行
Method1
,然后执行
Method2

C#3:创建和启动单独的线程。要等待它们完成,请调用线程。加入所有线程


C#4:Threading.Tasks.Parallel.Invoke(()=>Method1(),()=>Method2())

是否可以使用相同的委托样式为同一对象创建多线程。。我的意思是,如果我触发两个单独的委托,它将是多线程的。为了理解,你能写一个伪代码(粗略的)吗。在第二种情况下,不需要匿名方法(由
delegate
关键字引入):
newthread(newthreadstart(Method1))那么你的意思是,对于多任务处理,我需要执行thread1=Thread(newthreadstart(Method1));thread2=线程(新的ThreadStart(Method2));然后是thread1.join();螺纹2.连接()@新手,我试着编辑答案。要启动线程,请在其上调用
start()
Join()。你应该阅读我引用的链接。关于基本理解的问题+“紧急”-这是某种考试题吗?@Konrad,我们是否应该制作一个
紧急
标签?:)@好主意。任何带有该标签的问题都会自动隐藏在起始页上。;-)表示(c#3.0)对于多任务,我需要执行thread1=Thread(新的ThreadStart(Method1));thread2=线程(新的ThreadStart(Method2));然后是thread1.join();螺纹2.连接();
delegate {
    Method1();
    Method2();
}