Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Thread (многопоточность)
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Хочу добавить такое Код: plaintext 1. 2. 3. 4. 5. 6. Не выходит, потому, что контролы на форме не отвечают и сама форма не отвечает во время выполнения трейда В книге написано, что нужно перед запуском трейда сделать так ProbaThread.IsBackground = True Но, у меня положение дел не поменялось - форма и контролы не доступны Никто не знает "В чём проблема?" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 10:29 |
|
||
|
Thread (многопоточность)
|
|||
|---|---|---|---|
|
#18+
Ну вот тебе, как вариант - уверен, можно применить при любой необходимости. По моей задаче, надо было с одной формы запустить 7 процессов и кроме того для каждого процесса запустить счетчик времени с точностью до милисекунды. Кроме того, один счетчик отображает время для всех процессов. При этом форма свободна. Счетчиком (у меня) работает самопальный контрол. Для реализации такой задачи я соорудил вспомагательный класс, в котором при инициализации создается процесс в режиме ожидания "команды для старта". Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. Для сокращения кода приведу пример для двух процессов. На форме кроме "всякого не нужного", есть кнопка "Выполнить" С нее все и начинается. Еще есть таймер, который постоянно считывает значение lblCoProc.Text выясняя есть ли какой-либо процесс для запуска. Пока значение lblCoProc.Text = "0" - ничего не происходит. Возможно какой-то процесс выполняется или вообще никто еще не стартовал. Далее часть кода формы, который полностью (в моем случае) отвечает за управление процессами. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. Ну вот в общем и все. У меня работает прекрасно. Тебе никто не запрещает перестроить этот код для старта каждого процесса по своей кнопке или другому действию. Для более глубокого интереса о теории этого всего "гамуза", почитай в MSDN: AutoResetEvent ManualResetEvent Mutex SyncLock Для начального ознакомления, очень подойдет статья Андрея Колесова "Многопоточные приложения для .NET" Всего наилучшего Oleg K ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2004, 02:42 |
|
||
|
Thread (многопоточность)
|
|||
|---|---|---|---|
|
#18+
Прошу прощения, хочу еще уточнить. В приведенном мной примере работа настроена таким образом, что второй процесс ждет первый и пока первый процесс не выполнится полностью, второй не стартует и т.д. Все процессы стартуют по очереди, один за другим. По этому примеру можно организовать старт процессов в любой последовательности или одновременно, или группами, по кнопке - как угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2004, 03:02 |
|
||
|
|

start [/forum/topic.php?fid=20&msg=32680224&tid=1438448]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
165ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
| others: | 272ms |
| total: | 530ms |

| 0 / 0 |
