작성자가 원하는 것!!
실시간으로 1초에도 여러줄이 계속 생성되는 로그파일에서
초단위까지 동일한 시간을 기준으로 원하는 단어를 저장해서
동일하게 화면에 오버레이로 띄우고 싶다!
보통 한줄을 띄우고 다음줄을 띄우는게 일반적인데
지나간 줄을 저장해두고 비교한 후 띄우는게 목표!
해결방법!!
else if (e.Command == 20)
{
if (checkBox2.Checked == true && e.Argument2 == "조건")
{
this.BeginInvoke(new EventHandler(delegate (object s, EventArgs ee)
{
string myTime = e.time.ToString("yyyy/MM/dd hh:mm:ss"); //시간을 스트링타입으로
name1 = e.Argument1; //보내는쪽에서는 딱히 할게 없다.
time1 = myTime;
TransferForm_Info();
}));
}
받는쪽!!
private List<string> namebuffer1 = new List<string>();
private List<string> namebuffer2 = new List<string>();
private List<string> namebuffer3 = new List<string>();
private List<string> namebuffer4 = new List<string>();
private List<string> namebuffer5 = new List<string>();
private List<string> timebuffer1 = new List<string>();
private List<string> timebuffer2 = new List<string>();
private List<string> timebuffer3 = new List<string>();
private List<string> timebuffer4 = new List<string>();
private List<string> timebuffer5 = new List<string>();
4개를 띄울건데 5개는 해놔야 뭔가 잘 되는것 같습니다…
정확하게 테스트는 못해봤는데 일단 저렇게 선언(?) 해두고!
public void buffer()
{
if (namebuffer1.Count > 0) //네임버퍼에 뭔가 들어오면
{
namebuffer5.Clear(); //5를비우고
namebuffer5.AddRange(namebuffer4); //5에 4를 넣고?
namebuffer4.Clear();//이걸 왜 2개를 해놨는지 모르겠는데 이렇게해야 잘되더라구요....?
namebuffer4.Clear();
namebuffer4.AddRange(namebuffer3);
namebuffer3.Clear();
namebuffer3.Clear();
namebuffer3.AddRange(namebuffer2);
namebuffer2.Clear();
namebuffer2.Clear();
namebuffer2.AddRange(namebuffer1);
namebuffer1.Clear();
}
if (timebuffer1.Count > 0)
{
timebuffer5.Clear();
timebuffer5.AddRange(timebuffer4);
timebuffer4.Clear();
timebuffer4.Clear();
timebuffer4.AddRange(timebuffer3);
timebuffer3.Clear();
timebuffer3.Clear();
timebuffer3.AddRange(timebuffer2);
timebuffer2.Clear();
timebuffer2.Clear();
timebuffer2.AddRange(timebuffer1);
timebuffer1.Clear();
}
namebuffer1.Add(name);//보낸쪽의 name을 namebuffer1에 먼저 넣어두는것 같습니다.
timebuffer1.Add(time);
}
저렇게 해서 하나가 들어오면 결국엔 하나씩 밀려서 저장이 되는것 같습니다.
string joinedNames1 = String.Join(", ", namebuffer1.ToArray());
string joinedNames2 = String.Join(", ", namebuffer2.ToArray());
string joinedNames3 = String.Join(", ", namebuffer3.ToArray());
string joinedNames4 = String.Join(", ", namebuffer4.ToArray());
string joinedTimes1 = String.Join(", ", timebuffer1.ToArray());
string joinedTimes2 = String.Join(", ", timebuffer2.ToArray());
string joinedTimes3 = String.Join(", ", timebuffer3.ToArray());
string joinedTimes4 = String.Join(", ", timebuffer4.ToArray());
스트링으로 변환을 해서
if (joinedTimes1 == joinedTimes2 && joinedTimes2 == joinedTimes3 && joinedTimes3 == joinedTimes4)
//타임이 1번과2번, 2번과3번, 3번과4번이 같으면 (한줄씩 올라오기때문에 1,3번이 혹은 1,4번이 같으면 이란 조건은 의미가 없을것 같더군요)
{
g.DrawString(joinedNames1 + "\n" + joinedNames2 + "\n" + joinedNames3 + "\n" + joinedNames4,
//텍스트 1234를 뿌린다
new Font(FontLibrary.Families[0], 30, FontStyle.Regular), Brushes.White,
ClientRectangle, stringFormat);
SelectBitmap(image, 500);
}
if (joinedTimes1 == joinedTimes2 && joinedTimes2 == joinedTimes3 && joinedTimes3 != joinedTimes4)
//시간이 1번과 2번이 같고 2번과 3번이 같은데 3번과 4번은 다르다면(123번만같다면!)
{
g.DrawString(joinedNames1 + "\n" + joinedNames2 + "\n" + joinedNames3,
//123번만 뿌린다
new Font(FontLibrary.Families[0], 30, FontStyle.Regular), Brushes.White,
ClientRectangle, stringFormat);
SelectBitmap(image, 500);
}
if (joinedTimes1 == joinedTimes2 && joinedTimes2 != joinedTimes3)
//1번과 2번이 같고 2번과 3번이 다르다면
{
g.DrawString(joinedNames1 + "\n" + joinedNames2,
new Font(FontLibrary.Families[0], 30, FontStyle.Regular), Brushes.White,
ClientRectangle, stringFormat);
SelectBitmap(image, 500);
}
if (joinedTimes1 != joinedTimes2)
{
g.DrawString(joinedNames1,
new Font(FontLibrary.Families[0], 30, FontStyle.Regular), Brushes.White,
ClientRectangle, stringFormat);
SelectBitmap(image, 500);
}
int millisecondsDelay = 1500;
if (joinedNames1 != null)
//여기서 좀 고민했는데 null이라고 할지 Empty라고할지.. 둘다해봤는데 이게 잘 되서..
//값이 없으면 1.5초후에 빈화면을 띄우게 해봤습니다.
{
await Task.Delay(millisecondsDelay);
logParser_chatCommandEvent4();
}
빅스퀘어님이 간단한거같다고 하셨지만…
마치 참 쉽죠? 같은 느낌으로 얘기하셨지만…
머리가 뽀개지는줄알았습니다…
결국엔 이해는 하지않기로 하고 일단 작동이 잘 되기에…
거듭 감사드립니다 여러분!! 고맙습니다!!