У меня здесь две вещи. Одним из них является библиотека C ++ DLL, работающая в фоновом режиме при нажатии клавиш. Другая - это функция C #, которая запрашивает информацию из DLL и понимает ее в режиме реального времени.
private void characterProcessor() {
while (run == true) {
int characterID = characterCapture();
}
}
Эта функция в C # - это поток, который постоянно зацикливается, однако он будет ожидать нажатия клавиши, прежде чем двигаться дальше.
characterCapture () - это функция DLL, котораяне возвращается, пока не будет нажата клавиша.
Я пытался использовать thread.abort()
для принудительного выхода, но это только выбросило threadabortexception
. И изменение run = false
, чтобы остановить цикл while, также не останавливает его, потому что функция не зацикливается, пока символ не нажимается снова.
Обычно, если я выйду из программы, код остановится, и онзакончилОднако DLL не позволяет программе завершить работу должным образом, ожидая, пока она также не завершит свою работу.
Поэтому, когда я выхожу из программы, она остается открытой в фоновом режиме, пока не будет нажата клавиша. Можно ли как-нибудь прервать этот вызов DLL по команде?
Возможное решение, о котором я подумал, - это отправка переменной в DLL, которая говорит ей прекратить ждать нажатия клавиши, но afaikсвязь с DLL - только улица с односторонним движением.