Aşağıdaki kod neden çalışmaz anlayamıyorum:Neden boş bir .NET Görev başlatıldı ve statik bir kurucu için bekledikten sonra tamamlanmaz?
var task = new Task(() => { });
task.Start();
if (task.Wait(10000))
{
logger.Info("Works");
}
else
{
logger.Info("Doesn't work");
}
görev durum zaman aşımı süresi dolduktan sonra "Running" durumunda kalıyor, yapılacak bir şey olsa. Ancak task.Start()
'un task.RunSynchronously()
ile değiştirilmesi işe yarayacaktır.
Neyin yanlış yaptığına dair bir fikrim var mı?
Sorunu çoğaltmak için bir test projesi şu anda kullanılabilir: http://erwinmayer.com/dl/TaskTestProject.zip. Görebildiğim kadarıyla, yukarıdaki kod ile yöntem statik yapıcı içinde çalışırsa çalışmaz. Ancak, doğrudan bir statik sınıf yöntemi olarak adlandırılırsa çalışır. O inşaat http://blogs.msdn.com/b/pfxteam/archive/2011/05/03/10159682.aspx
.. – MethodMan
@DJ KRAZE: Görev, TPL'nin temel sınıflarından biridir. Bkz. Http://msdn.microsoft.com/en-us/library/dd460717.aspx –
Bu kodun herhangi bir harici değişkene veya işlevine (istediğiniz günlük kaydı işleviyle değiştirilebilen genel günlük kaydı işlevi dışında) ihtiyacı yoktur. –