В настоящее время я разрабатываю сборку, которая будет использоваться третьими лицами. Один из классов имеет длительный процесс TCP-соединений и информирует о своем процессе, используя события. Например
''# Do stuff that takes some time
RaiseEvent CompletedFirstPartEvent()
''# Do stuff that takes some time
RaiseEvent CompletedSecondPartEvent()
''# Do stuff that takes some time
RaiseEvent CompletedSecondPartEvent()
Что я видел, если если обработчик одного из этих событий занимает слишком много времени (или, что еще хуже, он блокируется), у меня могут быть тайм-ауты, и разработчику трудно понять, что один класс не работает нормально, потому что его обработчик занимает слишком много времени.
Я собирался запускать события в новом потоке, чтобы избежать этой проблемы, но мне это кажется странным, потому что я никогда не видел ничего подобного, и до сих пор я видел, как разработчик создает новый поток, если его Обработчик собирался отнимать много времени. Итак, вопрос:
Что бы вы сделали? Создать новый поток или заставить пользователя создать свой собственный поток? (Или - есть лучший подход, которого я не знаю?)
Заранее спасибо.