Jestem niewiarygodnie nowy w programowaniu i jak na razie wystarczająco dobrze się uczę, ale nadal nie mogę zrozumieć, jak spóźnić się tak, jak chcę. Nad czym pracuję jest rodzajem "gry" testowej przy użyciu aplikacji formularzy Windows, która obejmuje system walki. W tym chcę stworzyć NPC, który wykonuje akcję co kilka sekund. Problem polega na tym, że chcę również umożliwić graczowi interakcję między atakami. Thread.Sleep naprawdę nie wydają się działać dla mnie nie tylko dlatego, że nie wiem jak Multithread, ale gdy próbuję go uruchomić, powiedzmy tak:Jak mogę wykonać krótkie opóźnienie w C# bez użycia trybu uśpienia?
textBox1.Text += "\r\nThread Sleeps!";
System.Threading.Thread.Sleep(4000);
textBox1.Text += "\r\nThread awakens!";
Wydaje nalegają na spanie najpierw, a następnie drukowanie obu linii.
Myślę, że to wszystko, co mogę powiedzieć w tej chwili, ale jeśli to nadal jest zbyt nieprecyzyjne lub rozwlekłe, proszę mi powiedzieć.
Krótko mówiąc, w języku C# Chcę zrobić pewne opóźnienie przed uruchomieniem, ale jednocześnie nadal zezwalam na interakcję użytkownika.
można użyć czasomierza zamiast i ogień go w twoim przedziale ... – Rohit
Wątek jest również odpowiedzialny za drukowanie twojego interfejsu użytkownika, ale ponieważ blokujesz go za pomocą funkcji "Uśpienia", nie może aktualizować interfejsu pokazującego pierwszy wiersz. – user2674389
Użyj Task.Delay zamiast Sleep. Wtedy nie będziesz mieć żadnych problemów z zablokowanym interfejsem użytkownika. Ta nowa funkcja jest dostępna w .Net 4.5. – Ohlin