title: How to determine if method is async at runtime
body: <p>I have a legacy project that has hundreds of method signatures for a Winforms event. Obviously the current ones I don't want to go and do BeginInvoke/EndInvoke on because this will cause UI cross threading issues.</p>
  
  <p>However I have need (because of deadlocks) to be able to mark these signatures as async to handle some async commands that we have to be able to do. No other way results in anything other than a deadlock.</p>
  
  <p>I can successfully call the event with BeginInvoke and it works perfectly and asyncs properly etc. However that breaks it out into another thread and breaks the old implementations that we don't want to have to go through and make async and Invoke aware.</p>
  
  <p>So I was investigating using the event.GetInvokationList() and looping through and calling each separately. If the method was async, then begin/end invoke. Otherwise call it straight up on the UI thread.</p>
  
  <p>My only problem is that I can't find any way through reflection to tell if the method signature is async or not. </p>
  
  <p>Anyone know how to figure out if a method is async or not from the MethodInfo or something else from GetInvokationList() values?</p>
  
  <p>Thanks!</p>