cách tốt nhất này trong C# để ngăn chặn chức năng ở giữa là từ khóa return
trong chức năng, nhưng làm thế nào để tôi biết khi nào nên sử dụng return
từ khóa để dừng chức năng ở giữa, sau khi nó kéo dài ít nhất 3 giây? Lớp học Stopwatch
từ System.Diagnostics
là câu trả lời. Hàm phức tạp này kéo dài từ 2 giây đến 5 phút (tùy thuộc vào dữ liệu đầu vào) hợp lý sử dụng nhiều vòng lặp, và thậm chí có thể đệ quy, vì vậy giải pháp của tôi cho bạn là ở mã đầu tiên của hàm đó, tạo một thể hiện của Stopwatch
sử dụng System.Diagnostics
với từ khóa new
, bắt đầu nó bằng cách gọi Start()
chức năng của lớp Stopwatch, và cho mỗi vòng lặp và vòng lặp, ngay từ đầu, thêm đoạn mã sau:
if (stopwatch.ElapsedMilliseconds >= 3000) {
stopwatch.Stop();
// or
stopwatch.Reset();
return;
}
(tip: bạn có thể gõ nó với bàn tay một lần, sao chép nó Ctrl + C, và sau đó chỉ cần dán nó Ctrl + V). Nếu chức năng đó sử dụng đệ quy, để tiết kiệm bộ nhớ, hãy tạo ra thể hiện toàn cục Đồng hồ bấm giờ thay vì tạo nó như thể hiện cục bộ lúc đầu, và khởi động nó nếu nó không chạy ở đầu mã. Bạn có thể biết rằng với số IsRunning
của lớp Đồng hồ bấm giờ. Sau đó yêu cầu thời gian trôi qua dài hơn 3 giây và nếu có (true
) dừng hoặc đặt lại Đồng hồ bấm giờ và sử dụng từ khóa return
để dừng vòng lặp đệ quy, khởi động rất tốt, nếu chức năng của bạn kéo dài trong thời gian dài do đệ quy chủ yếu nhiều hơn các vòng lặp. Đó là nó. Như bạn có thể thấy, nó rất đơn giản, và tôi đã thử nghiệm giải pháp này, và kết quả cho thấy nó hoạt động! Hãy tự mình thử!
Nguồn
2013-03-04 18:56:08
có thể trùng lặp http://stackoverflow.com/questions/5025509/how-to-estimate-method-execution-time – Reniuz
Có, trùng lặp, điểm chuẩn kết thúc theo cùng cách với bất kỳ chuỗi nào khác dừng lại. –