В мультиформном приложении .NetCF 3.5 я пытаюсь создать формы в фоновом режиме, пока пользователь занят предыдущей формой.
Мы используем Orientation Aware Control в проекте
Мы используем класс-оболочку (FormController
) (пожалуйста, дайте мне знать, если я использую неправильную терминологию), чтобы хранить статические ссылки на различные формы в нашем приложении. Поскольку мы хотим создать их только один раз.
В данный момент формы создаются при первом их использовании. Но так как это трудоемкая операция, мы бы хотели сделать это в фоновом режиме, пока пользователь
Application.Run(new FormController.StartUI());
class FormController{
private static object lockObj = new object();
private static bool secIsLoaded = false;
private static StartForm startForm = new StartForm();
private static SecForm m_SecForm;
static SecForm FormWorkOrderList
{
get
{
CreateSecForm();
return m_SecForm;
}
}
private static void StartUI(){
startForm.Show();
ThreadStart tsSecForm = CreateSecForm;
Thread trSecForm = new Thread(tsSecForm);
trSecForm.Priority = ThreadPriority.BelowNormal;
trSecForm.IsBackground = true;
trSecForm.Start();
return startForm;
}
private static void CreateSecForm()
{
Monitor.Enter(lockObj);
if(!secIsLoaded){
m_SecForm = new SecForm();
secIsLoaded = true;
}
Monitor.Exit(lockObj);
}
private static void GotoSecForm()
{
SecForm.Show();
StartForm.Hide();
}
Когда я вызываю GotoSecForm()
, программа выдает исключение на SecForm.Show()
с исключением из hResult: 2146233067 и никакой другой ценной информации.
Трассировка стека исключительной ситуации:
on Microsoft.AGL.Common.MISC.HandleAr(PAL_ERROR ar)
on System.Windows.Forms.Control.SuspendLayout()
on b..ctor(OrientationAwareControl control)
on Clarius.UI.OrientationAwareControl.ApplyResources(CultureInfo cultureInfo, Boolean skipThis)
on Clarius.UI.OrientationAwareControl.ApplyResources()
on Clarius.UI.OrientationAwareControl.OnLoad(EventArgs e)
on Clarius.UI.OrientationAwareControl.c(Object , EventArgs )
on System.Windows.Forms.Form.OnLoad(EventArgs e)
on System.Windows.Forms.Form._SetVisibleNotify(Boolean fVis)
on System.Windows.Forms.Control.set_Visible(Boolean value)
on System.Windows.Forms.Control.Show()
Я совершенно не знаю, что здесь происходит. Кто-нибудь может мне помочь?
Или есть несколько способов загрузить формы в фоновом режиме?
Дайте мне знать, если потребуется дополнительная информация.