Thực hành không tốt để sử dụng vòng lặp trong khi đó? Có lẽ tốt hơn là sử dụng Đồng hồ bấm giờ, hoặc có thể giải pháp này có một số cạm bẫy?Triển khai C# timeout
public void DoWork()
{
//do some preparation
DateTime startTime = DateTime.Now;
int rowsCount = 0;
int finalCount = getFinalCount();
do
{
Thread.Sleep(1000);
rowsCount = getRowsCount(); // gets rows count from database, rows are added by external app.
} while (rowsCount < finalCount && DateTime.Now - startTime < TimeSpan.FromMinutes(10));
}
tôi thấy bài viết này Implement C# Generic Timeout, nhưng nó là quá phức tạp để sử dụng trong các tình huống đơn giản - bạn cần phải suy nghĩ về đồng bộ hóa của chủ đề, nó là thích hợp để hủy bỏ chúng hay không và như vậy.
Bạn muốn làm gì với Tạo thời gian chính xác? Nếu bạn nói với toàn bộ scenerio của bạn, có lẽ chúng tôi có thể cung cấp cách khác nhau để sử dụng. –
Related/duplicate: http://stackoverflow.com/questions/3195030/thread-timeout-in-c – RQDQ
Chỉ cần dừng công việc sau một thời gian - bắt đầu công việc, nếu nó chạy hơn 10 phút thì dừng công việc. Chủ đề gọi phương thức có thể bị chặn. – anderhil