Я занимаюсь разработкой приложения для форм Windows, которое подключается к аппаратному обеспечению, получает много данных (~ 1 GSample / sec), обрабатывает их и выдает их на экран при нажатии кнопки.Сейчас я пытаюсь автоматизировать процесс в цикле, который может быть запущен / остановлен в любое время, чтобы я мог отслеживать его, настраивая входные данные для оборудования сбора данных.Я думаю, это ясно, что мне нужно сделать это в отдельном потоке, но у меня есть куча времени, пытаясь сделать это в C ++ / Cli - я нашел несколько хороших примеров с использованием MFC, который не поддерживаетсяExpress.
В частности: моя задача - нажать кнопку, которая обрабатывается в Form1.h, чтобы вызвать функцию в моем главном файле Acquisition.cpp, который содержит следующий код (в настоящее время это бесконечный цикл)
void Form1::realTimeUpdate()
{
// live is a boolean variable set by a button on the form
while(live)
{
displayVariance(getVar(getQuadratures(100),nbrSamples));
}
}
Я хочу выполнить этот код в отдельном потоке, чтобы основная программа могла прослушивать запрос пользователя на остановку операции.Без многопоточности мне в настоящее время приходится принудительно выходить из программы (или запускать ее фиксированное количество раз), чтобы остановить ее.
Есть ли какие-либо предложения о том, как можно выполнить этот код в отдельном потоке?
Я (безуспешно) уже пробовал несколько вещей:
Изменение примера, приведенного в Этот пример Microsoft .Проблема: требуется параметр / clr: oldSyntax , который несовместим с другими 1300 строками кода в программе.
Попытка сделать то, что я сделал бы в Java(Объявите глобальный поток и запустите / остановите его в любой точке кода. Проблема: компилятор не позволит мне объявить глобальный System :: Threading.Thread
this прекрасный пример. Проблема: Требуется MFC.
Любые предложения будут с благодарностью!