UWP: как запустить задачу без замедления?

#c# #uwp #real-time #midi

#c# #uwp #в режиме реального времени #midi

Вопрос:

я разрабатываю приложение uwp на c #, способное воспроизводить midi-файлы. Я создал ThreadPoolTimer для сканирования с интервалом 1 мс и другой ThreadPool для запуска асинхронной задачи, которая запускает midi-сообщения файлов относительно времени, отсканированного tick. Это работает правильно, однако, когда я выполняю какую-либо другую операцию с ноутбуком, это приводит к замедлению работы. В основном, когда я включаю графический интерфейс в фоновом режиме. Я изменил пул потоков.Запустите функцию синхронизации () с помощью Task.Run(), и она работает лучше, но я пытаюсь понять, как лучше всего создать приложение реального времени с помощью uwp, потому что мне нужно реализовать новые задачи. Кроме того, я хочу изменить базовый приоритет моего приложения программно, потому что оно лучше работает с высоким приоритетом, но я не хочу каждый раз менять его вручную. Как я могу выполнить эти задачи? я ищу в Интернете, но я не нашел никакой полезной информации об этом в uwp.

Спасибо

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

может быть, я могу разработать какую-нибудь библиотеку

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

1. Реализация задач использует пул потоков под капотом, основное преимущество задач заключается в том, что они позволяют меньше фокусироваться на низкоуровневых аспектах многопоточности. Итак, в общем, если вам не нужен низкоуровневый контроль, мы обычно используем задачи. Кроме того, вы имеете в виду, что хотите изменить приоритет вашего приложения uwp в диспетчере задач?

2. Рассматривали ли вы возможность изменения приоритета только того потока, который фактически выполняет работу в реальном времени?

3. Еще раз здравствуйте, я провел тест, изменив ThreadPoolTimer на 1 мс с классом DateTime, поэтому я использую системные часы для сканирования времени, и это работает отлично. Может быть, я увеличу приоритет ThreadPoolTimer, чтобы решить эту проблему. Я попробую это. Однако хороший ли способ использовать системные часы? я не уверен

4. Кажется возможным работать с системными часами. для получения более подробной информации о ThreadPoolTimer вы можете обратиться к этому документу .