Tôi cực kỳ mới để lập trình, và tôi đã học đủ tốt cho đến nay, tôi nghĩ, nhưng tôi vẫn không thể nắm bắt được ý tưởng làm chậm trễ theo cách tôi muốn. Những gì tôi đang làm là một loại thử nghiệm "trò chơi" thingy bằng cách sử dụng một ứng dụng Windows hình thức liên quan đến một hệ thống chiến đấu. Trong đó, tôi muốn tạo một NPC thực hiện một hành động sau mỗi vài giây. Vấn đề là, tôi cũng muốn cho phép người chơi tương tác giữa các đòn tấn công. Thread.sleep thực sự dường như không làm việc cho tôi không chỉ vì tôi không biết làm thế nào để đa luồng, nhưng bất cứ khi nào tôi cố gắng để chạy nó, nói, như thế này:Làm cách nào để thực hiện một sự chậm trễ ngắn trong C# mà không cần sử dụng chế độ ngủ?
textBox1.Text += "\r\nThread Sleeps!";
System.Threading.Thread.Sleep(4000);
textBox1.Text += "\r\nThread awakens!";
Dường như nhấn mạnh vào ngủ đầu tiên, sau đó in cả hai dòng.
Tôi nghĩ rằng đó là tất cả những gì tôi có thể nói vào lúc này, nhưng nếu điều đó vẫn còn quá mơ hồ hoặc dài dòng, hãy cho tôi biết.
Tóm lại, Trong C# tôi muốn thực hiện một sự chậm trễ trước khi chạy nhưng đồng thời vẫn cho phép tương tác người dùng.
bạn có thể sử dụng bộ đếm thời gian để thay thế và cháy nó tại khoảng thời gian của bạn ... – Rohit
Chủ đề cũng chịu trách nhiệm in giao diện người dùng của bạn, nhưng vì bạn chặn nó bằng cách sử dụng 'Ngủ ', nó không thể cập nhật giao diện người dùng hiển thị dòng đầu tiên của bạn. – user2674389
Sử dụng Task.Delay thay vì Sleep. Sau đó, bạn sẽ không gặp bất kỳ sự cố nào với giao diện người dùng bị chặn. Chức năng mới này có sẵn trong .Net 4.5. – Ohlin