Всем привет!
Пожалуйста помогите!
Не могу корректно закрыть форму при закрытии плагина - виснет АБ и выкидывает из АА.
Итак есть какая то форма, стартует при запуске плагина
form = new FormDist(this);
formThread = new Thread(RunForm);
formThread.Start();
В ее конструкторе
public FormDist(Core core)
{
InitializeComponent();
this.core = core;
thread = new Thread(<какой то метод с бесконечным циклом>);
thread.Start();
}
В теле плагина (в Core) открытие формы
public void RunForm()
{
try
{
Application.Run(form);
}
catch (System.ComponentModel.Win32Exception) { }
catch (Exception error)
{
Log("error (" + error.GetType() + ") on form: " + error.Message);
}
}
Все отрабатывает как мне нужно, но когда пытаюсь закрыть форму или сам плагин - краш АБ, есть подписка при закрытиии формы и там
try
{
if (form != null)
{
form.Invoke(new Action(() => form.Close()));
form.Invoke(new Action(() => form.Dispose()));
}
Application.Exit();
}
catch (InvalidOperationException) { }
catch (Exception error)
{
Log("Form Close Exception 2: " + error.Message);
}
try
{
formThread.Abort();
}
catch (ThreadAbortException) { }
catch (Exception error)
{
Log("Form Abort Exception: " + error);
}
Это не помогает - АБ все равно виснет и выкидывает из АА
Что я делаю не так ????? Помогите, пожалуйста!
Пожалуйста помогите!
Не могу корректно закрыть форму при закрытии плагина - виснет АБ и выкидывает из АА.
Итак есть какая то форма, стартует при запуске плагина
form = new FormDist(this);
formThread = new Thread(RunForm);
formThread.Start();
В ее конструкторе
public FormDist(Core core)
{
InitializeComponent();
this.core = core;
thread = new Thread(<какой то метод с бесконечным циклом>);
thread.Start();
}
В теле плагина (в Core) открытие формы
public void RunForm()
{
try
{
Application.Run(form);
}
catch (System.ComponentModel.Win32Exception) { }
catch (Exception error)
{
Log("error (" + error.GetType() + ") on form: " + error.Message);
}
}
Все отрабатывает как мне нужно, но когда пытаюсь закрыть форму или сам плагин - краш АБ, есть подписка при закрытиии формы и там
try
{
if (form != null)
{
form.Invoke(new Action(() => form.Close()));
form.Invoke(new Action(() => form.Dispose()));
}
Application.Exit();
}
catch (InvalidOperationException) { }
catch (Exception error)
{
Log("Form Close Exception 2: " + error.Message);
}
try
{
formThread.Abort();
}
catch (ThreadAbortException) { }
catch (Exception error)
{
Log("Form Abort Exception: " + error);
}
Это не помогает - АБ все равно виснет и выкидывает из АА
Что я делаю не так ????? Помогите, пожалуйста!