Я работаю над симулятором на основе DirectX.На котором я должен проверить устройство, было ли устройство подключено или удалено с ПК.
Мне удалось создать классы для прибытия и удаления устройства в другом потоке, который вызывает событие изсама нить при получении или удалении устройства .Соответствующий метод события вызывается в главной форме и там:
Предположим, Form1
- главное окно, а Form2
- вторичное.
Form2 form2Instance = new Form2();
Я хочу показать другую форму(Form2
) оставляя главное окно (Form1
) позади (так же, как оно ведет себя как form2Instance.ShowDialog();
в общих случаях.) После нескольких попыток я сделал это с помощью
Applicatin.Run(new Form2());
, ноForm2 не ведет себя как 'form2Instance.ShowDialog();
в любом случае.
Просто даю код, если он может помочь в ответе:
iARMdetectionThreadClass detection;
InProgram_iARMdetection iARMStatusGUI;
private void Form2_Load(object sender, EventArgs e)
{
iARMStatusGUI = new InProgram_iARMdetection();
detection = new iARMdetectionThreadClass();
detection.IniARM_device_Arrive += new iARMdetectionThreadClass.iARM_device_ArrivedEventHandler(detection_IniARM_device_Arrive);
detection.IniARM_device_Remove += new iARMdetectionThreadClass.iARM_device_RemovedEventHandler(detection_IniARM_device_Remove);
detection.startThread();
}
void detection_IniARM_device_Remove(iARM_deviceInfo senderInfo)
{
detection.StopCheckBeingRemoved();
MethodInvoker act = delegate
{
this.label_iARMStatus.Text = detection.iARM_deviceInf.iARMStatus;
};
this.label_iARMStatus.BeginInvoke(act);
Application.Run(new InProgram_iARMdetection()); //Blocking code
detection.StartCheckBeingRemoved();
}
void detection_IniARM_device_Arrive(iARM_deviceInfo senderInfo)
{
MethodInvoker act = delegate
{
this.label_iARMStatus.Text = detection.iARM_deviceInf.iARMStatus;
};
this.label_iARMStatus.BeginInvoke(act);
//detection.StopCheckArriving();
//detection.StartCheckArriving();
}
Мне нужен код, чтобы быть БлокировкаКод .Здесь:
Application.Run(new InProgram_iARMdetection()); //Blocking code