Herhangi biri bağlamları birbirinden ayırmaya ve aynı zamanda Görevleri kullanmaya çalıştı mı?Log4Net'in ThreadContext ve Görev arasındaki çakışma
using (log4net.ThreadContext.Stacks["contextLog"].Push("Saving Data"))
{
log.Info("Starting transaction");
var taskList = new List<Task>();
taskList.Add(Task.Factory.StartNew(() =>
{
log.Info("Inside Transaction");
}));
Task.WaitAll(taskList.ToArray());
}
ve ben o sonucu alıyorum::
Böyle bir şey çalışıyorum
2015/42/26 13:42:10,841 INFO [Saving Data] Starting transaction
2015/42/26 13:42:10,870 INFO [(null)] Inside Transaction
Ben [Verileri Kaydetme] yerine [olmasını bekliyordum (null)] ikinci satırda.
O yeni Görev başlar başlamaz log4net ThreadContext Stack erişimi kaybeder görünmektedir.
Bunu önlemek için nasıl biliyor musunuz?DÜZENLEME: İlk o düşünce başta İşlem Kapsam bir sorun vardı, ama @stuartd beni belirttiği gibi, gayet iyi çalışıyordu. Sonra bir görev olduğunu anladım ve asıl sorun buydu.
görünür olmalıdır yerine olarak Can Bunu yeniden üretme - https://gist.github.com/stuartd/81c8754391aa1a580da0 - bunu daha fazla kodla güncelleyebilir misiniz, böylece tekrarlanabilir mi? – stuartd
@stuartd Haklısınız. Sorunu gerçek problemi yansıtacak şekilde değiştirdim: System.Threading.Tasks. –