2011-12-27 36 views
5

Tôi hiện đang làm việc trên trình khởi chạy trình bảo vệ màn hình, nhưng tôi muốn trì hoãn kích hoạt trình bảo vệ màn hình trong một khoảng thời gian để đảm bảo vị trí chuột vẫn ở vị trí để kích hoạt nó, ngăn chặn việc kích hoạt ngẫu nhiên. Tôi đang suy nghĩ một số loại thread để kiểm tra vị trí của con chuột cho x giây trước khi thực hiện, đây sẽ là một giải pháp hợp lý?Trì hoãn một hành động trong một khoảng thời gian

Tôi không viết một bảo vệ màn hình, tôi đã viết một ứng dụng để khi bạn di chuyển chuột đến một góc chỉ định của máy tính để bàn của bạn, bảo vệ màn hình xuất phát trên ... Tôi muốn biết làm thế nào để thêm một sự chậm trễ đến khi bạn di chuyển chuột vào góc đó để ngăn chặn tình cờ ra đời của bảo vệ màn hình

Nếu vậy làm thế nào?

+0

Có một API để quản lý Trình bảo vệ màn hình. Bạn đang nói về điều đó? –

+0

Viết ứng dụng loại "Hot Corners" của riêng tôi bằng cách sử dụng móc chuột mức thấp. Tôi có tất cả những gì làm việc, chỉ cần tìm một cách để trì hoãn sự ra mắt của bảo vệ màn hình khi con chuột đang ở trong "vùng kích hoạt" – CybrHwk

+2

Không, một trình bảo vệ màn hình chú ý đến vị trí chuột không có ý nghĩa gì cả. Nó không được phép * kích hoạt * khi một con người di chuyển nó xung quanh. Hãy suy nghĩ điều này thông qua một chút. –

Trả lời

4

để khi bạn di chuyển chuột đến một góc chỉ định của máy tính để bàn của bạn, bảo vệ màn hình xuất phát trên ...

Khi chuột được ở đó, thiết lập một boolean và một bộ đếm thời gian. Thực hiện bất kỳ thao tác chuột nào xóa boolean.
Chỉ khi bộ hẹn giờ kích hoạt và cờ của bạn vẫn còn ở đó, hãy tiếp tục.

Nói cách khác, hãy sử dụng một máy trạng thái nhỏ.

+3

+1 cho "không sử dụng chuỗi cho" – dthorpe

+0

Đã đi đến giải pháp này, hãy xử lý, cảm ơn sự giúp đỡ của bạn :) – CybrHwk

0

Đây là mã giả

var CurrentMouse = ...; // Get mouse coordinates. 
    ThreadPool.QueueUserWorkItem(  
    (s) => { 
      Thread.Sleep(500); // Half a second 

     // if (Mouse did not move) 
     //  Launch Screen Saver 

    }); 

EDIT: Lưu ý điều này không nói chuyện với cách gọi trở lại lớp gui hoặc sợi khóa. Xem nguồn cảm hứng cho tình huống này trên bài viết trên blog của tôi có tiêu đề C# MultiThreading Using ThreadPool, Anonymous Delegates and Locks hiển thị khóa thích hợp.

+0

Một câu trả lời không thực sự khác có liên kết đến blog của bạn. –

Các vấn đề liên quan