Я имею дело с большой ситуацией в недостатке проектирования архитектуры в многопоточности. Я стараюсь обеспечить безопасность своего приложения в потоке и избежать конфликтов друг с другом.
Проблема, которую я знал, заключалась в следующем:
Предположим, есть две нити: Нить A и Нить B .
Поток A - это то, что вы увидите в методе Static Void Main как единственный поток.
Поток A создает объект с асинхронными методами Start / Stop и применяет обработку событий к этому объекту.
Когда в объекте вызывается метод Start из Thread A , он создает новый поток для этого объекта для обработки информации из свойств объекта или входных данных, который является Thread B . (В моем случае процессы приема и отправки по сети выполняются по моему собственному протоколу.)
Когда объект в Потоке B завершен при получении новой информации от входа или свойства, Поток B вызывает событие в объекте для передачи данных в Поток A .
Проблема в том, что когда событие вызывалось, оно управлялось Thread B . Поток B должен был выполняться только на этом объекте, чтобы продолжать выполнять метод обработки, но вместо этого он переходил к другому объекту и позже имел конфликт между потоками между Потоком A и Поток B , когда предполагается передать событие Поток A для Поток A для обработки этого нового вывода.
Если Поток A - это тот, который инициализирует объект и класс, на котором он работал, почему, когда событие было вызвано, оно запускается в Потоке B вместо этого?
Мне нужно было Поток B , чтобы продолжить цикл навсегда и не прерывать программу, передавая информацию о событии в Поток A .
Пожалуйста, извините за мой английский и грамматику и спасибо за ваше терпение. : -)
[РЕДАКТИРОВАТЬ x4]
Если вы хотите получить исходный код, он находится здесь: http://fcpfoundation.codeplex.com/ (сейчас.)
Вы можете найти исходный код по ссылке выше. Извините, если мое объяснение не ясно. Причина, по которой я не смог сделать пример кода, заключается в том, что он просто слишком большой.