C# В Экране-Проекте


Я недавно работаю на общем экране проекта/удаленного рабочего стола в C# .С NET Framework версии 4.5. Как это работает при нажатии кнопки старт, клиент будет отправлять команды на сервер, чтобы отправлять скриншоты пока на общий экран типа bool имеет значение false (я.кнопка "стоп" нажата).

Все данных начинается с байта определить, какие команды, и следующие 4 байта используются для измерения длины пакета.

На мой вопрос, я должен быть с помощью резьбы или для этой задачи? Мне нужно одно или другое, иначе клиента интерфейс зависает.

Ниже я использую Thread:

private void ProcessCommand(byte command)
{
    if (command == Commands.StartRemoteDesktop && !Globals.screensharing)
        {
            new Thread(StartSharing).Start();
        }
}

private void StartSharing()
    {
        Globals.screensharing = true;
        while (Globals.screensharing)
        {
            Methods.SendCapture();
        }
    }

И вот как это выглядит с Task:

private void ProcessCommand(byte command)
{
    if (command == Commands.StartRemoteDesktop && !Globals.screensharing)
    {
        Task.Run(() =>
        {
            while (Globals.screensharing)
            {
                Methods.SendCapture();
            }
        });
    }
}

Я уверен, что будет лучшим вариантом здесь.



212
-1
c#
задан 10 февраля 2018 в 08:02 Источник Поделиться
Комментарии
1 ответ

Это зависит от того, что вы подразумеваете под "лучше". Я бы использовал Thread поскольку работа постоянно работает.

А Thread объект будет на переднем плане резьбы, которая позволит предотвратить приложения от прекращения тех пор, как он работает.

Task.Run поставит задание в очередь, чтобы работать на потоке из пула потоков. Она может не запуститься сразу, и это будет в фоновом потоке, поэтому он не помешает приложению завершиться, если все потоки переднего плана прекращаются.

Количество потоков, пул потоков может работать ограничено, поэтому, если ваша работа всегда используя один из них, что повышает вероятность того, что какая-то другая задача будет выполняться в конце. Или, возможно, ваша работа будет отложено, пока какая-то другая задача, которая является частью пула потоков работает.

0
ответ дан 11 февраля 2018 в 01:02 Источник Поделиться