Çok fazla Windows GUI programlama yapmıyorum, bu yüzden bu, WinForms'u daha fazla tanıyan insanlarla ilgili genel bilgiler olabilir. Ne yazık ki, sorunu açıklamak için herhangi bir kaynak bulamadık, hata ayıklama sırasında bugün karşılaştım.Control.EndInvoke, istisna için çağrı yığınını sıfırlar
EndInvoke öğesini bir async temsilcisine çağırırsak. Yeniden atılan yöntemin yürütülmesi sırasında atılan istisnaları alırız. Çağrı yığını, istisnanın orijinal kaynağını yansıtacaktır. Ancak, bir Windows.Forms.Control üzerinde benzer bir şey yaparsak, Control.EndInvoke uygulaması çağrı yığınını sıfırlar. Bu basit bir testle veya Reflektör'de kodlara bakarak gözlemlenebilir. EndInvoke alakalı kod alıntısı burada:
if (entry.exception != null)
{
throw entry.exception;
}
anlıyorum Kontrol ve zaman uyumsuz delegeler üzerinde EndInvoke farklıdır başlarlar/ama Control.EndInvoke benzer davranışlar beklerdik.
Herhangi bir neden var mı? Denetim, async delegeleri orijinal çağrı yığınını korumak için ne yaparsa yapmaz?
ben biliyorum ama hayata değilim çünkü çok fazla yararlı olduğu Windows.Forms.Control. –