Это концептуальный вопрос: я хочу запустить Canon EDSDK в приложении Windows.Form
. Теперь в идеале я хотел бы отделить свои данные от моего пользовательского интерфейса и моей модели. В частности, это означает мой windows.form
из моего объекта камеры EDSDK. Ковыряясь, пытаясь заставить камеру работать независимо от моей формы, я наткнулся на эту публикацию здесь «>Обратные вызовы EDSDK не работают, что в основном описывает мой начальный опыт работы с EDSDK.
Итак, после дальнейших исследований я увидел, что мне нужно начать форму с Application.Run()
, чтобы получать сообщения Windows для обратных вызовов. Так что пока я запускаю EDSDK в UI-Form, что дает мне нужные мне функции. Я опираюсь на отличный инструментарий, который можно найти здесь: http://www.codeproject.com/Articles/688276/Canon-EDSDK-Tutorial-in-Csharp. Однако я столкнулся с зависанием моего приложения, скорее всего, из-за того, что в системе отсутствует обратный вызов камеры. (по крайней мере это мое предположение)
Итак, что я хотел бы сделать, так это вернуться к своей первоначальной идее запускать EDSDK в отдельной задаче, чтобы иметь возможность отделять причины и устранять любые проблемы. Я видел в нескольких других публикациях, что запуск нескольких команд Application.Run()
— плохая идея или плохая практика. Однако я так и не придумал, как по-другому построить структуру моей программы. Я хотел бы внести свой вклад в лучшую архитектуру для этой цели.