簡體   English   中英

暫停控制器方法調用C#上的線程

[英]Pause a thread on a controller method call C#

我的問題是關於C#線程的。

我想在控制器方法調用上暫停線程。

我有點主意,可以通過將我已經運行的線程中的主線程加入到我想暫停直到控制器方法完成其任務的方法來完成。

請指導我最簡單的方法。

謝謝

可能較簡單的方法之一是使用指示器來指示線程是否應等待。 考慮以下...

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有很多線程同步類/方法,您可以進一步研究。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM