Eşzamansız yürütme için bir geri arama argümanı alan bir yöntem var, ancak yakalama bloğu eşzamanlı çağrı tarafından atılan tüm özel durumları yakalamıyor gibi görünüyor (this.Submit
, eşzamanlı bir yönteme başvuruyor) .Eşzamansız bir geri aramada atılan bir özel durumun yakalanması
public void Submit(FileInfo file, AnswerHandler callback)
{
SubmitFileDelegate submitDelegate = new SubmitFileDelegate(this.Submit);
submitDelegate.BeginInvoke(file, (IAsyncResult ar) =>
{
string result = submitDelegate.EndInvoke(ar);
callback(result);
}, null);
}
Yeni iş parçacığı tarafından atılan özel durumun yakalanması ve özgün iş parçacığına gönderilmesinin bir yolu var mı? Ayrıca, bu, async istisnalarını ele almak için "uygun" bir yol mu?
try
{
target.Submit(file, (response) =>
{
// do stuff
});
}
catch (Exception ex)
{
// catch stuff
}
ama bunu yapmak için daha uygun ya da zarif bir yolu vardır: o (istisna sorun giderildikten varsayarak) böyle denilebilir yani benim kod yazdım?
İlk kod örneğindeki catch bloğu, geri arama veya EndInvoke tarafından atılan bir istisna yakalayacaktır.İkinci kod örneğindeki catch bloğu SubmitFileDelegate yapıcısı veya BeginInvoke tarafından atılan herhangi bir özel durumu yakalayacaktır. Hangisini beklediğinizi yapmıyor/yapmasını istiyor? – dgvid
Oops, bunu unuttu. İkincisinin düzgün çalışmasını istiyorum, ama şu anda da değil. – kevmo314
"SubmitFileDelegate" in nasıl tanımlandığını gösterebilir misiniz? – GolfWolf