Длительное выполнение функции в приложении c#. net - PullRequest
0 голосов
/ 03 августа 2020

Я работаю над настольным приложением, разработанным на C # /. Net, в котором есть много длительных процессов. Пользовательский интерфейс зависает, пока они работают. Что определенно раздражает пользователя.

По этой причине я использую фоновый процесс, который помогает.

Но я должен использовать это в каждой форме; в приложении есть более сотни форм, которые должны использовать фоновый процесс.

Теперь я пытаюсь создать функцию, которой я передаю функцию для запуска этой функции в потоке без пользовательского интерфейса или в фоновый процесс.

Возможно ли это?

Могу ли я отправлять различные пользовательские функции одной центральной функции, которая выполняет их в фоновом процессе?

1 Ответ

1 голос
/ 04 августа 2020

. NET он встроен, см.

ThreadPool.QueueUserWorkItem

https://docs.microsoft.com/en-us/dotnet/api/system.threading.threadpool.queueuserworkitem?view=netcore-3.1

вы можете ставить в очередь такие вещи, как

ThreadPool.QueueUserWorkItem((s) => { /* stuff to do in the background */ }, thing);

Это позволяет вам ставить в очередь функции для выполнения потоком пула потоков. Переменная thing будет передана как объект через параметр s, когда поток начнет работу над вашей функцией.

Если вы хотите обновить что-то в своем потоке пользовательского интерфейса из фонового потока, вы должны проверить если InvokeIsRequired и если да, то Invoke изменение (в основном он передает функцию обратно в поток пользовательского интерфейса для обновления элементов пользовательского интерфейса)

Это может быть не лучшим подходом в вашей ситуации, но я Я не совсем уверен, что у вас за фоновая работа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...