C#. Net Приложение работает только на одном логическом процессоре - PullRequest
0 голосов
/ 26 марта 2020

У меня есть приложение WPF, которое использует класс внутри старого файла ActiveX DLL. Я убедился, что часть моего кода с использованием DLL работает в отдельном потоке, я использовал new Thread(), но когда я запускаю приложение, только одно из логических процессоров Windows используется моим приложением.

Поскольку мне нужно использовать элемент управления ActiveX, я должен создать класс System.Windows.Forms.Form.

boardThread = new Thread(() =>
{
    var form = new HostForm(...);
    form.GetData += (s, e) =>
    {
        OnDataRecieved(e);
    };
    form.ShowDialog();
});
boardThread.Priority = ThreadPriority.Highest;
boardThread.IsBackground = true;
boardThread.SetApartmentState(ApartmentState.STA);
boardThread.Start();

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

enter image description here

Приложение обрабатывает некоторые данные в реальном времени, считанные с платы, но это не может не отставать от входа. Я подумал, что если он использует всю доступную мощность ЦП, он может обрабатывать данные вовремя.

Если кто-то имеет подобный опыт или знает, почему приложение использует только один из логических ЦП, я был бы признателен за помощь. Спасибо

...