Tôi muốn làm điều gì đó như thế này:async đang chờ bắt ngoại lệ - tôi đang ở chủ đề nào?
public async Task<int> DoWork(int parameter) {
try {
await OperationThatMayCompleteSynchronously(parameter);
} catch(Exception) e {
if(completedSynchronously)
doSyncThing();
else
doAsyncThing();
}
}
Lưu ý: Tôi đang chạy nhiệm vụ trên hồ bơi thread, vì vậy không có bối cảnh async.
Tôi muốn có thể biết sự khác biệt giữa ngoại lệ được ném ngay lập tức và tôi vẫn đang ở trên chuỗi gọi (ví dụ: parameter
không hợp lệ khiến chức năng hủy bỏ) và ngoại lệ được ném khi tác vụ không đồng bộ hoàn thành và tôi đang sử dụng một số chuỗi gọi lại ngẫu nhiên khác (ví dụ: lỗi mạng)
Tôi có thể làm cách nào để đạt được điều này nếu tôi không sử dụng await
và chỉ sử dụng ContinueWith
trên hoạt động không đồng bộ. có thể sử dụng await
?
Hãy nhớ rằng nếu 'OperationThatMayCompleteSynchronously' là một phương thức không đồng bộ, tất cả ngoại lệ sẽ được lưu trữ trong tác vụ và sẽ không có ngoại lệ nào được ném đồng bộ – i3arnon