Это характерно для проекта C#, но я игнорирую эти файлы/каталоги:
*.csproj.user
/obj/*
/bin/*
*.ncb
*.suo
у меня нет проблем при выполнении кода в складе на других машинах после того, как я проигнорирую все эти файлы. Самый легкий способ узнать, что необходимо сохранить, состоит в том, чтобы сделать копию папки и начать удалять вещи, Вы думаете, не необходимы. Продолжайте пытаться создать, и, пока можно создать, успешно продолжают удалять. Если Вы удаляете слишком много, копируете его с исходной папки.
В конце у Вас будет хороший каталог полным единственных файлов, которые должны фиксироваться.
Исключение не передается обратно в вызывающий поток. Если вы хотите, чтобы это было так, вы можете добавить блок catch
и выяснить, как сигнализировать вызывающему потоку. Если вызывающий поток является потоком пользовательского интерфейса WinForms или WPF, вы можете использовать класс SynchronizationContext
для передачи вызова потоку пользовательского интерфейса. В противном случае вы можете использовать потокобезопасную очередь (или синхронизирующую блокировку) и периодически проверять ее в другом потоке.
System.Timers.Timer
будет молча поглощать исключения и продолжать работу таймера (хотя это зависит от изменение в будущих версиях фреймворка); System.Threading.Timer
завершит работу программы.
Я не знаю, какой вариант лучше, но когда я использую таймер обратного вызова, я обычно генерирую исключения и позволяю им всплывать в основной подпрограмме обратного вызова, где я обрабатываю их изящно. Поток продолжает работать по таймеру, как и должно.
Необработанные исключения в потоке (System.Threading.Timer) останавливают всю вашу программу.