Thread.sleep 과 Delay
sleep : 지정된 시간(밀리초) 동안 현재 스레드를 일시 중단.
사용법
Thread.Sleep(2000);
하지만 굳이 스레드까지 중단 안하고 정지를 시킴으로써 성능면에서 더 우수한 퍼포먼스를 낼수 있다.(Delay를 주기)
Delay
public void Delay(int ms)
{
DateTime dateTimeNow = DateTime.Now;
TimeSpan duration = new TimeSpan(0, 0, 0, 0, ms);
DateTime dateTimeAdd = dateTimeNow.Add(duration);
while (dateTimeAdd >= dateTimeNow)
{
System.Windows.Forms.Application.DoEvents();
dateTimeNow = DateTime.Now;
}
return;
}
Delay 메서드를 만든 후 받을 인자를 int로 준다.
form load가 켜지는 시점에서 데이트타임을 받아오며 그 시점기준으로 파라미터에 따라 n초 딜레이를 줄 수 있다.
private void Form1_Load(object sender, EventArgs e)
{
string[] arr = tmConnecter.GetCachedTagNames();
Console.WriteLine(arr.Length);
}
미들웨어에서 값을 받아 올 시 배열에 값이 들어오지 않는 이슈가 발생했다.
하지만 form1_load에 딜레이 Delay(n)
을 줘서 n초뒤에 로드를 함으로 써 데이터가 받아와질 수 있도록 해결 했다.