में एक अपवाद को पकड़ना मेरे पास एक विधि है जो असीमित रूप से निष्पादित करने के लिए कॉलबैक तर्क लेती है, लेकिन कैच ब्लॉक सिंक्रोनस कॉल (this.Submit
द्वारा सिंक्रोनस विधि को संदर्भित किसी भी अपवाद को पकड़ने वाला प्रतीत नहीं होता है) ।एक एसिंक्रोनस कॉलबैक
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);
}
क्या नया धागा फेंक दिया गया अपवाद पकड़ने और इसे मूल धागे पर भेजने का कोई तरीका है? साथ ही, क्या यह async अपवादों को संभालने का "उचित" तरीका है?
try
{
target.Submit(file, (response) =>
{
// do stuff
});
}
catch (Exception ex)
{
// catch stuff
}
लेकिन वहाँ यह करने के लिए एक और अधिक उचित या सुरुचिपूर्ण तरीका है: तो यह इस तरह कहा जाता है किया जा सकता है (यह मानते हुए अपवाद समस्या का समाधान हो जाता है) मैं अपने कोड लिखा?
अपने पहले कोड नमूने में कैच ब्लॉक एक अपवाद कॉलबैक द्वारा या EndInvoke द्वारा फेंका पकड़ लेंगे।आपके दूसरे कोड नमूने में कैच ब्लॉक सबमिटफाइलडिलेगेट कन्स्ट्रक्टर या BeginInvoke द्वारा फेंक दिया गया कोई भी अपवाद पकड़ लेगा। कौन सा ऐसा नहीं कर रहा है जो आप उम्मीद करते हैं/चाहते हैं? – dgvid
ओह, इसे हटाने के लिए भूल गए। मैं चाहता हूं कि दूसरा सही तरीके से काम करे, लेकिन फिलहाल, न तो है। – kevmo314
क्या आप दिखा सकते हैं कि 'SubmitFileDelegate' कैसे परिभाषित किया गया है? – GolfWolf