我试图让 2 个线程在后台运行以执行任务。我必须按顺序创建线程并继续执行程序。但是只有在第一个线程完成时,第二个线程才必须执行它的工作。另外,再澄清一点。我希望在 WPF 应用程序上使用此解决方案。不需要 UI 反馈。我需要的只是第一个任务的状态更新。我同意,如果我们在一个线程中完成所有操作,那就没问题了。但是我们想要第二个线程单独做更多的事情,即使用户离开创建这个线程的屏幕。
这是示例:
class Program
{
static string outValue;
static bool _isFinished = false;
static void Main(string[] args)
{
ThreadStart thread1 = delegate()
{
outValue = AnotherClass.FirstLongRunningTask();
// I need to set the _isFinished after the long running finishes..
// I cant wait here because I need to kick start the next thread and move on.
//
};
new Thread(thread1).Start();
ThreadStart thread2 = delegate()
{
while (!_isFinished)
{
Thread.Sleep(1000);
Console.WriteLine("Inside the while loop...");
}
if (!string.IsNullOrEmpty(outValue))
{
// This should execute only if the _isFinished is true...
AnotherClass.SecondTask(outValue);
}
};
new Thread(thread2).Start();
for (int i = 0; i < 5000; i++)
{
Thread.Sleep(500);
Console.WriteLine("I have to work on this while thread 1 and thread 2 and doing something ...");
}
Console.ReadLine();
}
}
public class AnotherClass
{
public static string FirstLongRunningTask()
{
Thread.Sleep(6000);
return "From the first long running task...";
}
public static void SecondTask(string fromThread1)
{
Thread.Sleep(1000);
Console.WriteLine(fromThread1);
}
}
我在哪里设置_isFinished?
我不能使用 BackgroundWorker 线程。任何帮助表示赞赏。