在控制器方法上暂停一个线程调用C#

时间:2017-12-13 11:43:49

标签: c# multithreading pthread-join

我的问题是关于C#线程。

我想在控制器方法调用上暂停一个Thread。

我有点想法,可以通过从我已经运行的线程加入我们的主线程来完成,我想暂停,直到控制器方法完成其任务。

请指导我最简单的方法。

由于

1 个答案:

答案 0 :(得分:0)

可能有一种更简单的方法是使用指示器来表示线程是否应该等待。请考虑以下内容......

public class WaitTester
{
    public static bool _wait = false;

    public static void Initialize()
    {
        StartThreadOne(5);
        StartThreadTwo(5);
    }

    public static void StartThreadOne(int n)
    {
        new System.Threading.Tasks.Task(new Action<Object>((num) =>
            {
                Console.WriteLine("Thread1: == Start ========");
                int max = (int)num;
                for (int i = 0; i <= max; i++)
                {
                    while (_wait) { Thread.Sleep(100); }
                    Console.WriteLine("Thread1: Tick - {0}", i);
                    Thread.Sleep(1000);
                }
                Console.WriteLine("Thread1: == End =========");
            }), n).Start();
    }

    public static void StartThreadTwo(int n)
    {
        new System.Threading.Tasks.Task(new Action<Object>((num) =>
            {
                Console.WriteLine("Thread2: == Start ========");
                _wait = true;
                int max = (int)num;
                for (int i = 0; i <= max; i++)
                {
                    Console.WriteLine("Thread2: Tick - {0}", i);
                    Thread.Sleep(1000);
                }
                _wait = false;
                Console.WriteLine("Thread2: == End =========");
            }), n).Start();
    }
}

这不是处理交叉线程信令的最佳方法,但它是如何完成它的一个非常简单的例子。 .Net有一大堆线程同步类/方法,你可以进一步研究。