Closed inversionhourglass closed 1 month ago
using (var outerScope = serviceProvider.CreateScope()) { var locker1 = new EventWaitHandle(false, EventResetMode.ManualReset); var locker2 = new EventWaitHandle(false, EventResetMode.ManualReset); var t1 = Task.Run(() => { // 等待并行线程t2先完成pScope的创建 locker1.WaitOne(); // 此时已pScope已完成创建,这里的scope理论应该是outerScope,但实际上是pScope locker2.Set(); }); var t2 = Task.Run(() => { using (var pScope = outerScope.ServiceProvider.CreateScope()) { // 通知t1,已完成pScope创建 locker1.Set(); locker2.WaitOne(); } }); await Task.WhenAll(t1, t2); }