Tôi đang tìm một mục đích chung thử và thử lại với thời gian chờ trong C#. Về cơ bản, tôi muốn những điều sau đây:Mục đích chung Hãy thử và Thử lại với Thời gian chờ trong C#?
bool stopTrying = false;
DateTime time = DateTime.Now;
while (!stopTrying)
{
try
{
//[Statement to Execute]
}
catch (Exception ex)
{
if (DateTime.Now.Subtract(time).Milliseconds > 10000)
{
stopTrying = true;
throw ex;
}
}
}
Trong trường hợp trên, tôi đợi 10 giây, nhưng phải là thời gian chờ thay đổi dựa trên tham số. Tôi không muốn phải lặp lại mã đầy đủ này bất cứ nơi nào tôi cần sử dụng nó. Có nhiều nơi trong mã của tôi, nơi chúng không phải là một thời gian chờ được tích hợp vào API và tôi sẽ nhấn một ngoại lệ nếu ứng dụng chưa sẵn sàng cho câu lệnh thực thi. Điều này cũng sẽ tránh việc phải mã hóa sự chậm trễ trong ứng dụng của tôi trước khi có sự an toàn này.
Làm rõ: Tuyên bố được đề cập có thể giống như bài tập. Nếu tôi sử dụng một đại biểu và method.Invoke, không phải là invokation scoped bên trong đại biểu và không phải là phương pháp ban đầu?
Vui lòng sử dụng 'ném ; 'để xem xét lại các ngoại lệ, không phải là 'ném ex', vì sau này phá hủy stac k dấu vết. – Will
@Vẫn, tôi đã sử dụng mã của OP. Bạn nói đúng, mặc dù; 'ném' nên được sử dụng một mình. Tôi sẽ cập nhật câu trả lời của tôi để phản ánh điều này. – strager
Bạn đang thiếu một stopTrying = true; sau khi gọi "method.Invoke()"; –