using System; using System.Collections.Generic; //using System.Linq; using System.Text; using System.Threading; using System.Collections; using System.Windows.Forms; namespace FPER { // 스레드 공용 루틴 // cyim 2015.8.4 수신반을 위한 static 클래스 정리 public class _Thread { // 스레드 관리 해쉬테이블 public Hashtable CreatedThread = new Hashtable(); // 생성 (파라미터가 없는 타입 : 스레드 실행시에 필요한 데이터가 없다) public void Create(string Key, ThreadStart WorkFunction) { if (CreatedThread.Contains(Key) == true) { //_Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 250, 150, _Text.OverLapKey, 0); ////_Event.DebugView_SendMessage_Write(e.ToString());("thread :" + "이미 키가 중복입니다" + ";" + Key.ToString()); } else { // 스레드 생성 Thread WorkingThread = new Thread(new ThreadStart(WorkFunction)); // 스레드시작 WorkingThread.Start(); // 해쉬에 추가 CreatedThread.Add(Key, WorkingThread); } } // 생성 (파라미터가 있는 타입 : 스레드 실행시에 필요한 데이터가 있다) public void Create(string Key, ParameterizedThreadStart WorkFunction, object Data) { if (CreatedThread.Contains(Key) == true) { //_Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 250, 150, _Text.OverLapKey, 0); ////_Event.DebugView_SendMessage_Write(e.ToString());("thread :" + "이미 키가 중복입니다" + ";" + Key.ToString()); } else { // 스레드 생성 Thread WorkingThread = new Thread(new ParameterizedThreadStart(WorkFunction)); // 스레드시작 WorkingThread.Start(Data); // 해쉬에 추가 CreatedThread.Add(Key, WorkingThread); } } // 시작 public void Start(string Key) { if (CreatedThread.Contains(Key) == true) { ((Thread)CreatedThread[Key]).Start(); } } // 종료 public void Abort(string Key) { if (CreatedThread.Contains(Key) == true) { ((Thread)CreatedThread[Key]).Abort(); Delete(Key); //_Event.DebugView_SendMessage_Write(e.ToString());("스레드 중지!!!!"); } } // 삭제 public void Delete(string Key) { if (CreatedThread.Contains(Key) == true) { CreatedThread.Remove(Key); } } } }