_Thread.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. using System;
  2. using System.Collections.Generic;
  3. //using System.Linq;
  4. using System.Text;
  5. using System.Threading;
  6. using System.Collections;
  7. using System.Windows.Forms;
  8. namespace FPER
  9. {
  10. // 스레드 공용 루틴 // cyim 2015.8.4 수신반을 위한 static 클래스 정리
  11. public class _Thread
  12. {
  13. // 스레드 관리 해쉬테이블
  14. public Hashtable CreatedThread = new Hashtable();
  15. // 생성 (파라미터가 없는 타입 : 스레드 실행시에 필요한 데이터가 없다)
  16. public void Create(string Key, ThreadStart WorkFunction)
  17. {
  18. if (CreatedThread.Contains(Key) == true)
  19. {
  20. //_Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 250, 150, _Text.OverLapKey, 0);
  21. ////_Event.DebugView_SendMessage_Write(e.ToString());("thread :" + "이미 키가 중복입니다" + ";" + Key.ToString());
  22. }
  23. else
  24. {
  25. // 스레드 생성
  26. Thread WorkingThread = new Thread(new ThreadStart(WorkFunction));
  27. // 스레드시작
  28. WorkingThread.Start();
  29. // 해쉬에 추가
  30. CreatedThread.Add(Key, WorkingThread);
  31. }
  32. }
  33. // 생성 (파라미터가 있는 타입 : 스레드 실행시에 필요한 데이터가 있다)
  34. public void Create(string Key, ParameterizedThreadStart WorkFunction, object Data)
  35. {
  36. if (CreatedThread.Contains(Key) == true)
  37. {
  38. //_Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 250, 150, _Text.OverLapKey, 0);
  39. ////_Event.DebugView_SendMessage_Write(e.ToString());("thread :" + "이미 키가 중복입니다" + ";" + Key.ToString());
  40. }
  41. else
  42. {
  43. // 스레드 생성
  44. Thread WorkingThread = new Thread(new ParameterizedThreadStart(WorkFunction));
  45. // 스레드시작
  46. WorkingThread.Start(Data);
  47. // 해쉬에 추가
  48. CreatedThread.Add(Key, WorkingThread);
  49. }
  50. }
  51. // 시작
  52. public void Start(string Key)
  53. {
  54. if (CreatedThread.Contains(Key) == true)
  55. {
  56. ((Thread)CreatedThread[Key]).Start();
  57. }
  58. }
  59. // 종료
  60. public void Abort(string Key)
  61. {
  62. if (CreatedThread.Contains(Key) == true)
  63. {
  64. ((Thread)CreatedThread[Key]).Abort();
  65. Delete(Key);
  66. //_Event.DebugView_SendMessage_Write(e.ToString());("스레드 중지!!!!");
  67. }
  68. }
  69. // 삭제
  70. public void Delete(string Key)
  71. {
  72. if (CreatedThread.Contains(Key) == true)
  73. {
  74. CreatedThread.Remove(Key);
  75. }
  76. }
  77. }
  78. }