Как заставить код, работающий в приложении формы, работать в консольном приложении?
У меня есть код, который работает в приложении формы. Я перенес код в консольное приложение, чтобы сделать несколько анализов, и сделал все исправления для ввода переменных, которые пришли из элементов управления формой. Весь код работает в консольном приложении, за исключением того, который связан с обработчиком событий. В приведенном ниже коде я получаю следующие 2 ошибки в показанных местах:
Ошибка 1: CS0120 ссылка на объект требуется для программы нестатического поля, метода или свойства.OnIterationEvent'
Ошибка 2: CS0026 Ключевое слово 'это' не является допустимым в статическое свойство, статический метод и статический инициализатор
Я не смог найти ничего, что помогло бы мне с помощью поиска в Google. Почему обработчик событий должен работать в приложении формы, но не в консольном приложении? Любая помощь очень ценится.
Что я уже пробовал:
У меня есть следующий отдельный класс:
IterationEventArgs Класс.в CS
// обычные операторы "using"
namespace Limits { class IterationEventArgs : EventArgs { public int IterationNumber { get; set; } public IterationEventArgs(int aNumber) { IterationNumber = aNumber; } } }
Основная программа включает в себя следующее:
// нормальным "использованием" отчетность плюс:
// С или без 'public delegate void EventHandler();'
namespace Limits { Class Program { public event EventHandler<IterationEventArgs> OnRaiseIterationEvent; static void Main(string[] args) { // code void RaiseIterationEvent(int iterationNumber) { if (OnRaiseIterationEvent != null) // Error 1 OnRaiseIterationEvent(this, new iterationEventArgs(iterationNumber)); //Error 1, 2 else return; } } } }У меня есть метод внутри основного метода, который вызывает метод RaiseIterationEvent
внутри цикла for с использованием:
RaiseIterationEvent(iterationNumber1);