Как прервать вызов функции DLL? - PullRequest
0 голосов
/ 27 октября 2019

У меня здесь две вещи. Одним из них является библиотека 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 - только улица с односторонним движением.

...