Bunu bir ManualResetEvent aracılığıyla yapmalısınız. Başka bir iş parçacığı üzerinde
ManualResetEvent mre = new ManualResetEvent();
mre.WaitOne(); // This will wait
, açıkçası
ManualResetEvent
örneği başvurusu gerekir.
mre.Set(); // Tells the other thread to go again
şey yapmak için başka bir iş parçacığı bekleyin biraz metin yazdırmak ve daha sonra kaldığı yerden devam edecektir Tam örnek:
class Program
{
private static ManualResetEvent mre = new ManualResetEvent(false);
static void Main(string[] args)
{
Thread t = new Thread(new ThreadStart(SleepAndSet));
t.Start();
Console.WriteLine("Waiting");
mre.WaitOne();
Console.WriteLine("Resuming");
}
public static void SleepAndSet()
{
Thread.Sleep(2000);
mre.Set();
}
}
Bunu daha önce hiç yapmamıştım ama engelleme çizgisinde düşünüyorum ManualResetEvent kullanarak iş parçacığı. –
@ByteBlast: Bir kopya gibi görünüyor, ancak diğer sorudaki yanıt özellikle harika değil:/ – Ian
Bunu yalnızca bir arka plan iş parçacığına yaptığınızdan emin olun. Bir UI iş parçacığı (COM STA'ya katılan herhangi bir iş parçacığı, genellikle ana iş parçacığı ve genellikle herhangi bir nedenle bir pencereye sahip herhangi bir iş parçacığı) * iletileri * çalıştırmaya ve pompalamaya devam etmeli veya kararlılık sorunlarına neden olacaktır. –