Tôi đã có một lớp gọi là giao diện SOAP và nhận được một mảng dữ liệu. Tuy nhiên, nếu yêu cầu này hết thời gian, nó sẽ đưa ra một ngoại lệ. Điều này là tốt. Tuy nhiên, tôi muốn chương trình của tôi cố thực hiện lại cuộc gọi này. Nếu nó hết thời gian, tôi muốn nó tiếp tục thực hiện cuộc gọi này cho đến khi nó thành công. Làm thế nào tôi có thể thực hiện điều này?Lặp lại một hàm trong C# cho đến khi nó không còn ném ngoại lệ
Ví dụ:
try
{
salesOrdersArray = MagServ.salesOrderList(sessID, filter);
}
catch
{
?? What Goes Here to FORCE the above line of code to rerun until it succeeds.
}
Tăng thời gian chờ để nó không loại trừ ngoại lệ? – ChaosPandion
Bạn có thể chỉ cần gọi lại phương thức từ khối catch, * NHƯNG * - điều gì xảy ra nếu dịch vụ ngừng hoạt động trong một khoảng thời gian dài? Bạn có muốn phương thức chạy đệ quy trong 24 giờ không? Tôi khuyên bạn nên giới hạn nó cho một số lần thử lại. – Tim
Trong số tất cả các câu trả lời này, không một người nào bảo bạn bắt được một ngoại lệ cụ thể hơn. Điều gì sẽ xảy ra nếu khối thử của bạn chứa các đối tượng trong trạng thái không hợp lệ để có được 'salesOrderList'? Thử lại sẽ không bao giờ thành công. – Marc