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();
现在两者都可以同时运行
有用资源:
是不是有两个线程在运行
称为并行(多任务)
您可以根据经验进行检查:通过以下方式声明methodaMethod1
和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();
}