У меня есть несколько вопросов по синхронизации потоков, связанных с простым дизайном .NET C #.У меня есть идеи о том, как сделать синхронизацию, но я хотел бы передать идеи другим программистам, которые имеют больше опыта .Net, чем я (почти кто-либо).
Дизайн:
Этотестовое программное обеспечение
В одном потоке есть графический интерфейс (поток GUI), который имеет кнопки запуска, остановки, остановки, приостановки и возобновления.Кроме того, отображаются результаты каждого теста.Результаты обновляются при запуске теста.
Затем существует поток, который выполняет тест.Он хранится отдельно от GUI, поэтому GUI останется отзывчивым.Тест прост, без учета реального времени, взрывающихся вещей и т. Д.
Затем существует класс данных с результатами тестов.
Я думал о создании класса данныхглобальная статическая (так что будет только одна) и совместно используемая двумя потоками, защищенными с помощью Mutex.Класс run получит Mutex, затем обновит данные, выпустит Mutex и затем вызовет метод делегата, который обновит GUI.Есть ли лучший способ сделать это?
Прервать, остановить грациозно, сделать паузу и возобновить труднее.Метод run test перемещается в своем собственном потоке, когда вдруг пользователь хочет что-то изменить.Изящная остановка, пауза и возобновление могут быть обработаны с помощью флагов в классе данных, которые периодически проверяются потоком выполнения.Эти флаги могут быть установлены потоком GUI (конечно, снова используя Mutex).И прервать ... Как насчет уничтожения потока выполнения и последующего вызова метода, который переводит все тестовое оборудование в известное состояние?Есть ли лучший способ сделать это?