我正在使用 Reactive Framework 2,但它突然从 XP 机器上的 TaskPoolScheduler 抛出 throws Win32Exception,但它看起来不可重现。堆栈跟踪非常有限,知道吗?
2013-07-02 15:19:38,209 [31] ERROR MyUnhandledExceptionHandler : AppDomainUnhandledException
System.ComponentModel.Win32Exception (0x80004005): Access is denied
at System.Reactive.Concurrency.TaskPoolScheduler.<>c_DisplayClass2`1.<>cDisplayClass4.<Schedule>b_1()
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
它应该来自 Rx v1,因为调用堆栈是如此“空”:
// decompiled by ILSpy
public IDisposable Schedule<TState>(TState state, Func<IScheduler, TState, IDisposable> action)
{
if (action == null)
{
throw new ArgumentNullException("action");
}
SerialDisposable d = new SerialDisposable();
CancellationDisposable cancellationDisposable = new CancellationDisposable();
d.Disposable = cancellationDisposable;
this.taskFactory.StartNew(delegate
{
try
{
d.Disposable = action(this, state);
}
catch (Exception ex)
{
Exception ex2;
Exception ex = ex2;
Thread thread = new Thread(delegate
{
throw ex; // Here
});
thread.Start();
thread.Join();
}
}, cancellationDisposable.Token);
return d;
}
谢谢