실행중인 프로그램에서 1 초간 기다리십시오.
dataGridView1.Rows[x1].Cells[y1].Style.BackColor = System.Drawing.Color.Red;
System.Threading.Thread.Sleep(1000);
이 코드를 사용하여 그리드 셀을 인쇄하기 전에 1 초 동안 기다리려고하는데 작동하지 않습니다. 어떡해?
일시 중지되어 있지만 빨간색이 셀에 나타나지 않습니까? 이 시도:
dataGridView1.Rows[x1].Cells[y1].Style.BackColor = System.Drawing.Color.Red;
dataGridView1.Refresh();
System.Threading.Thread.Sleep(1000);
개인적으로 나는 Thread.Sleep
잘못된 구현 이라고 생각 합니다. 그것은 UI 등을 잠급니다. 나는 그것이 기다린 다음 실행되기 때문에 개인적으로 타이머 구현을 좋아합니다.
용법: DelayFactory.DelayAction(500, new Action(() => { this.RunAction(); }));
//Note Forms.Timer and Timer() have similar implementations.
public static void DelayAction(int millisecond, Action action)
{
var timer = new DispatcherTimer();
timer.Tick += delegate
{
action.Invoke();
timer.Stop();
};
timer.Interval = TimeSpan.FromMilliseconds(millisecond);
timer.Start();
}
타이머를 사용하는 대기 기능, UI 잠금 없음.
public void wait(int milliseconds)
{
System.Windows.Forms.Timer timer1 = new System.Windows.Forms.Timer();
if (milliseconds == 0 || milliseconds < 0) return;
//Console.WriteLine("start wait timer");
timer1.Interval = milliseconds;
timer1.Enabled = true;
timer1.Start();
timer1.Tick += (s, e) =>
{
timer1.Enabled = false;
timer1.Stop();
//Console.WriteLine("stop wait timer");
};
while (timer1.Enabled)
{
Application.DoEvents();
}
}
사용법 : 기다려야하는 코드 안에 이것을 배치하기 만하면됩니다.
wait(1000); //wait one second
바쁜 대기는 짧은 경우 심각한 단점이되지 않습니다. 제 경우에는 컨트롤을 플래시하여 사용자에게 시각적 피드백을 제공해야했습니다 (클립 보드에 복사 할 수있는 차트 컨트롤로, 몇 밀리 초 동안 배경이 변경됨). 다음과 같이 잘 작동합니다.
using System.Threading;
...
Clipboard.SetImage(bm); // some code
distribution_chart.BackColor = Color.Gray;
Application.DoEvents(); // ensure repaint, may be not needed
Thread.Sleep(50);
distribution_chart.BackColor = Color.OldLace;
....
사용 dataGridView1.Refresh();
:)
이 기능을 사용해보십시오
public void Wait(int time)
{
Thread thread = new Thread(delegate()
{
System.Threading.Thread.Sleep(time);
});
thread.Start();
while (thread.IsAlive)
Application.DoEvents();
}
통화 기능
Wait(1000); // Wait for 1000ms = 1s
I feel like all that was wrong here was the order, Selçuklu wanted the app to wait for a second before filling in the grid, so the Sleep command should have come before the fill command.
System.Threading.Thread.Sleep(1000);
dataGridView1.Rows[x1].Cells[y1].Style.BackColor = System.Drawing.Color.Red;
Maybe try this code:
void wait (double x) {
DateTime t = DateTime.Now;
DateTime tf = DateTime.Now.AddSeconds(x);
while (t < tf) {
t = DateTime.Now;
}
}
참고URL : https://stackoverflow.com/questions/10458118/wait-one-second-in-running-program
'programing' 카테고리의 다른 글
Dockerfile if else 조건 외부 인수 포함 (0) | 2020.10.07 |
---|---|
명령 또는 로컬 vimrc 파일을 사용하여 여러 vim 구성간에 전환하는 방법은 무엇입니까? (0) | 2020.10.07 |
Glide 라이브러리를 사용하여 이미지로드 완료시 표시되는 진행률 표시 줄의 가시성 설정 (0) | 2020.10.06 |
정적 생성자는 어떻게 작동합니까? (0) | 2020.10.06 |
adb는 여러 파일을 가져옵니다. (0) | 2020.10.06 |