我的问题是关于C#线程。
我想在控制器方法调用上暂停一个Thread。
我有点想法,可以通过从我已经运行的线程加入我们的主线程来完成,我想暂停,直到控制器方法完成其任务。
请指导我最简单的方法。
由于
答案 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有一大堆线程同步类/方法,你可以进一步研究。