首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C#中实现多线程

如何在C#中实现多线程
EN

Stack Overflow用户
提问于 2018-05-28 15:09:06
回答 1查看 116关注 0票数 0

我正在使用下面的例子。

代码语言:javascript
复制
using System;
using System.Threading;

public class MyThread 
{

    public void Thread1() 
    {
        for (int i = 0; i < 10; i++) 
        {
            Console.WriteLine("Hello world " + i);
            Thread.Sleep(1000);
        }
    }
}

public class MyClass 
{

    public static void Main() 
    {
        Console.WriteLine("Before start thread");

        MyThread thr1 = new MyThread();
        MyThread thr2 = new MyThread();

        Thread tid1 = new Thread(new ThreadStart(thr1.Thread1) );
        Thread tid2 = new Thread(new ThreadStart(thr2.Thread1) );

        tid1.Start();
        tid2.Start();
    }
}

它是这样工作的。

输出:

代码语言:javascript
复制
Before start thread
Hello world 0
Hello world 0
Hello world 1
Hello world 1
Hello world 2
Hello world 2
Hello world 3
Hello world 3
Hello world 4
Hello world 4
Hello world 5
Hello world 5
Hello world 6
Hello world 6
Hello world 7
Hello world 7
Hello world 8
Hello world 8
Hello world 9
Hello world 9

它从first for loop打印i并休眠1秒,移动到second for loop.It打印i for loop休眠1秒,然后移动到first。我不希望在每次i打印后都进行上下文切换,我希望在打印一些i值之后,经过一段时间后,在从第二个i打印的值再次过期的时间段内休眠一段时间,然后再返回到第一个循环。

例如:假设从1到2-10从第一个循环打印到2-10,休眠移动到第二个循环,它可能从第二个循环打印1到2-10,从第一个循环到I的第一个loop.Value的loop.and移动到第二个可能不同。

EN

回答 1

Stack Overflow用户

发布于 2018-05-28 15:21:49

你是说像这样的东西吗?

代码语言:javascript
复制
class Program
    {
        static void Main(string[] args)
        {
            Task.WaitAll
            (
               Task.Run(() => new Work().DoWork(1)),
               Task.Run(() => new Work().DoWork(2))
             );

            Console.ReadLine();
        }

        public class Work
        {
            public void DoWork(int taskNumber)
            {
                for(int i=0; i < 100; i++)
                {
                    Console.WriteLine("Task {0} Value {1}", taskNumber, i);
                }
            }
        }
    }

因此,您将获得以下输出

代码语言:javascript
复制
Task 1 Value 0
Task 1 Value 1
Task 1 Value 2
Task 1 Value 3
Task 1 Value 4
Task 1 Value 5
Task 1 Value 6
Task 1 Value 7
Task 1 Value 8
Task 1 Value 9
Task 1 Value 10
Task 1 Value 11
Task 1 Value 12
Task 2 Value 0
Task 2 Value 1
Task 2 Value 2
Task 2 Value 3
Task 2 Value 4
Task 2 Value 5
Task 2 Value 6
Task 2 Value 7
Task 2 Value 8
Task 2 Value 9
Task 2 Value 10
Task 2 Value 11
Task 2 Value 12
Task 2 Value 13
Task 2 Value 14
Task 2 Value 15
Task 2 Value 16
Task 2 Value 17
Task 2 Value 18
Task 2 Value 19
Task 2 Value 20
Task 2 Value 21
Task 2 Value 22
Task 2 Value 23
Task 2 Value 24
Task 2 Value 25
Task 2 Value 26
Task 2 Value 27
Task 2 Value 28
Task 2 Value 29
Task 2 Value 30
Task 2 Value 31
Task 2 Value 32
Task 2 Value 33
Task 2 Value 34
Task 2 Value 35
Task 2 Value 36
Task 1 Value 13
Task 1 Value 14
Task 1 Value 15
Task 1 Value 16
Task 1 Value 17
Task 1 Value 18
Task 1 Value 19
Task 1 Value 20
Task 1 Value 21
Task 1 Value 22
Task 1 Value 23
Task 1 Value 24
Task 1 Value 25
Task 1 Value 26
Task 1 Value 27
Task 1 Value 28
Task 1 Value 29
Task 1 Value 30
Task 1 Value 31
Task 1 Value 32
Task 1 Value 33
Task 2 Value 37
Task 2 Value 38
Task 2 Value 39
Task 2 Value 40
Task 2 Value 41
Task 2 Value 42
Task 2 Value 43
Task 2 Value 44
Task 2 Value 45
Task 2 Value 46
Task 2 Value 47
Task 2 Value 48
Task 2 Value 49
Task 2 Value 50
Task 2 Value 51
Task 2 Value 52
Task 2 Value 53
Task 2 Value 54
Task 2 Value 55
Task 1 Value 34
Task 1 Value 35
Task 1 Value 36
Task 1 Value 37
Task 1 Value 38
Task 1 Value 39
Task 1 Value 40
Task 1 Value 41
Task 1 Value 42
Task 1 Value 43
Task 1 Value 44
Task 1 Value 45
Task 1 Value 46
Task 1 Value 47
Task 1 Value 48
Task 2 Value 56
Task 2 Value 57
Task 2 Value 58
Task 2 Value 59
Task 2 Value 60
Task 2 Value 61
Task 2 Value 62
Task 2 Value 63
Task 2 Value 64
Task 2 Value 65
Task 2 Value 66
Task 2 Value 67
Task 2 Value 68
Task 2 Value 69
Task 2 Value 70
Task 2 Value 71
Task 2 Value 72
Task 2 Value 73
Task 2 Value 74
Task 2 Value 75
Task 2 Value 76
Task 1 Value 49
Task 1 Value 50
Task 1 Value 51
Task 1 Value 52
Task 1 Value 53
Task 1 Value 54
Task 1 Value 55
Task 1 Value 56
Task 1 Value 57
Task 1 Value 58
Task 1 Value 59
Task 1 Value 60
Task 1 Value 61
Task 1 Value 62
Task 1 Value 63
Task 1 Value 64
Task 1 Value 65
Task 1 Value 66
Task 1 Value 67
Task 1 Value 68
Task 1 Value 69
Task 2 Value 77
Task 2 Value 78
Task 2 Value 79
Task 2 Value 80
Task 2 Value 81
Task 2 Value 82
Task 2 Value 83
Task 2 Value 84
Task 2 Value 85
Task 2 Value 86
Task 2 Value 87
Task 2 Value 88
Task 2 Value 89
Task 2 Value 90
Task 2 Value 91
Task 2 Value 92
Task 2 Value 93
Task 2 Value 94
Task 2 Value 95
Task 2 Value 96
Task 2 Value 97
Task 2 Value 98
Task 2 Value 99
Task 1 Value 70
Task 1 Value 71
Task 1 Value 72
Task 1 Value 73
Task 1 Value 74
Task 1 Value 75
Task 1 Value 76
Task 1 Value 77
Task 1 Value 78
Task 1 Value 79
Task 1 Value 80
Task 1 Value 81
Task 1 Value 82
Task 1 Value 83
Task 1 Value 84
Task 1 Value 85
Task 1 Value 86
Task 1 Value 87
Task 1 Value 88
Task 1 Value 89
Task 1 Value 90
Task 1 Value 91
Task 1 Value 92
Task 1 Value 93
Task 1 Value 94
Task 1 Value 95
Task 1 Value 96
Task 1 Value 97
Task 1 Value 98
Task 1 Value 99

你的操作系统会给每一个“任务”时间来执行,就是时间过去了,它会一直等到他再次得到时间。因此,在这段时间内,任务处于“休眠”状态。

如果这对你有用,请现在就让我来吧。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50560902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档