Reflector bug report: Incorrect C# for System.Windows.Threading.Dispatcher.get_CurrentDispatcher()
------------------------------------------------
The IL for "System.Windows.Threading.Dispatcher.get_CurrentDispatcher()" in "WindowsBase,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35" is...
------------------------------------------------
.method public hidebysig specialname static class System.Windows.Threading.Dispatcher get_CurrentDispatcher() cil managed<br>{<br> .maxstack 1<br> .locals init ([0] class System.Windows.Threading.Dispatcher dispatcher) <br> L_0000: call class [mscorlib]System.Threading.Thread [mscorlib]System.Threading.Thread::get_CurrentThread() L_0005: call class System.Windows.Threading.Dispatcher System.Windows.Threading.Dispatcher::FromThread(class [mscorlib]System.Threading.Thread) L_000a: stloc.0 L_000b: ldloc.0 L_000c: brtrue.s L_0014 L_000e: newobj instance void System.Windows.Threading.Dispatcher::.ctor() L_0013: stloc.0 L_0014: ldloc.0 L_0015: ret }
------------------------------------------------
The INCORRECT C# produced by Reflector 10.3.1.1956 is....
------------------------------------------------
public static Dispatcher get_CurrentDispatcher() { Dispatcher dispatcher = FromThread(Thread.CurrentThread); return new Dispatcher(); }
------------------------------------------------
The CORRECT C# should be:
------------------------------------------------
public static Dispatcher get_CurrentDispatcher() { Dispatcher dispatcher = FromThread(Thread.CurrentThread); if (dispatcher == null) dispatcher = new Dispatcher(); return dispatcher; }
Please fix it at your leisure.