//Запуск генерации в асинхронном режиме public void AsyncGenerate() { //Инициализация формы мониторинга процесса генерации m_ProceedingForm = new ProceedingForm(); //Обработка нажатия на кнопку "Завершить..." m_ProceedingForm.StopButton.Click += new EventHandler((object obj, EventArgs Args) => { m_Content.StopGeneration(); }); //Обработка закрытия формы m_ProceedingForm.FormClosed += new FormClosedEventHandler((object obj, FormClosedEventArgs Args) => { m_ProceedingForm = null; m_Timer = null; AfterGenerate(); }); //Инициализация и запуск таймера для периодического опроса m_Content о статусе процесса генерации m_Timer = new System.Threading.Timer(TimerHandler, null, 500, 500); //Открытие формы m_ProceedingForm.Show(); //Запуск процесса генерации посредством асинхронного вызова делегата GenerateCallDelegate _invoke = GenerateCall; IAsyncResult _invokeResult = _invoke.BeginInvoke(AsyncGenerateCompleted, this); }
public CallGenerator(int timeInterval, GenerateCallDelegate generateCall) : base(timeInterval) { initElapsedEvent(); vGenerateCallEvent += generateCall; }