c# - Debugging weirdness with BeginInvoke -
i have following method:
protected void onbarcodescan(barcodescannereventargs e) { if (barcodescan != null) { //barcodescan.begininvoke(e, null, null); barcodescan(e); } } when try step above method works fine. able step in , on parts of method.
however, if switch comment (so barcodescan(e) commented out , remove comment on barcodescan.begininvoke(e, null, null) cannot step part of onbarcodescan method (ie break point on if (barcodescan != null) not hit.
i tried putting debug statements in there too. long begin invoke call in there not let me step method.
i checked output , when try step in says this:
a first chance exception of type 'system.notsupportedexception' occurred in scannertest.exe step into: stepping on method without symbols 'symbol.marshaller.symbolmessagewindow.wndproc' step into: stepping on method without symbols 'microsoft.windowsce.forms.messagewindow._wndproc'
why whole method un step able when there begininvoke in it?
any great!
asynchronous delegate calls (i.e., begininvoke) not supported compact framework.
as reason why debugger not break method, believe because of following:
begininvoke/endinvokemethods generated c# compiler (it required this), marked "native". means clr provide implementation.- the compact framework clr does not provide implementation.
- when jit compiler executes method first time, looks of methods may call (loading other assemblies, etc).
- since clr doesn't support
delegate.begininvoke, method calls cannot jit-compiled, , therefore cannot executed. - the
notsupportedexceptionthrown whenonbarcodescanfirst called (and jit-compiler attempts compile , fails). why cannot stepped debugger.
Comments
Post a Comment