Как запустить приложение Windows form на C одновременно с другим кодом на c

#c #winforms #opencv

#c #winforms #opencv

Вопрос:

Я создаю приложение Windows form. Но теперь я сталкиваюсь с некоторыми проблемами. Я хочу запустить приложение, а также другой код одновременно.

Справочная информация:

Я хочу создать открытую программу обработки изображений CV, которая работает вместе с Windows form. Я хочу отправить полученную информацию в форму, а также в обратном направлении.

Но проблема в том, что «cout» не выполняется до тех пор, пока форма не будет закрыта. Я надеюсь, что вы сможете мне помочь.

Вот мой Main.cpp Файл:

 #include "MyForm.h"
#include <opencv2/opencv.hpp>
#include <iostream>
#include <Windows.h>

using namespace System;
using namespace System::Windows::Forms;
using namespace cv;
using namespace std;

void main() {
   Application::EnableVisualStyles();
   Application::SetCompatibleTextRenderingDefault(false);
   TrackingGUI::MyForm form;
   Application::Run(% form);
   cout << "test" << endl; //This line will execute when the form is closed
}
  

Комментарии:

1. Application::Run(gcnew TrackingGUI::MyForm()); запускает цикл сообщений и инициализирует начальную форму. Что выполняется после, если конструктор формы. После этого отображается графический интерфейс. Если вы хотите поговорить с другим процессом, сделайте это в MyForm.h (или метод, вызываемый оттуда).

2. @Jimi Спасибо за ваш ответ. Мой другой код содержит цикл while true . Возможно ли это?

3. Нет, это невозможно, не напрямую. Приложение Windows Forms не является консольным приложением. while(true) Цикл, выполняемый в основном потоке, полностью заблокирует весь графический интерфейс. Для этого вам нужен рабочий поток и Invoke() / BeginInvoke() или основной поток (для обновления пользовательского интерфейса полученным результатом — с интеллектуальным порогом).

4. @Jimi Есть ли способ, чтобы 2 отдельные программы взаимодействовали друг с другом? Как в программе open cv и приложении form.

5. Да, конечно. Тогда это зависит от того, как работает другая программа . Но не спрашивайте меня об OpenCV, я использую только порт .Net, EmguCV, в C #.