我想要在後臺運行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線程。任何幫助表示讚賞。
如果您正在尋找WPF解決方案,那麼使用示例WPF代碼而不是控制檯代碼會很有用。 – 2012-07-24 18:39:33