Что лучший способ состоит в том, чтобы заставить поток сигнализировать о другом потоке в.NET?

, так как ES06 вы можете получить значения объекта как массива с

let arrValues = Object.values( yourObject) ;

, он возвращает массив значений объекта и не извлекает значения из Prototype !!

MDN DOCS Object.values ​​()

и для ключей (allready answerd передо мной здесь)

let arrKeys   = Object.keys(yourObject);

10
задан Community 23 May 2017 в 12:34
поделиться

6 ответов

Испытайте BackgroundWorker. Это поддерживает обновления прогресса и отмену выполняющейся задачи.

Если Вы хотите, чтобы один поток ожидал, пока другой поток не закончил делать свою вещь, то Монитор. Ожидайте и Монитор. Импульс хорош, как ManualResetEvent. Однако они действительно не имеют применения для отмены выполняющейся задачи.

Если Вы хотите написать свой собственный код отмены, у Вас могло бы просто быть поле где-нибудь, к которому оба потока имеют доступ. Mark его энергозависимый, например:

private volatile bool cancelling;

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

Это не действительно сопоставимо с наличием 'глобальной переменной', поскольку можно все еще ограничить объем семафорной переменной, чтобы быть частными к классу.

7
ответ дан 3 December 2019 в 22:40
поделиться

Изучите Монитор. Ожидайте и Монитор. Импульс. Вот превосходная статья о Поточной обработке в (очень читаемом) .NET: http://www.albahari.com/threading/part4.aspx

3
ответ дан 3 December 2019 в 22:40
поделиться

Немного неопределенный (за исключением времени), но изучают ManualResetEvent и AutoResetEvent. Вы также могли бы хотеть искать ключевое слово блокировки и Монитор.

5
ответ дан 3 December 2019 в 22:40
поделиться

Простое решение, как синхронизируемая статическая булевская переменная, должно быть всем, в чем Вы нуждаетесь в противоположность основанному на платформе решению который copuld быть излишеством для Вашего сценария. В случае, если Вы все еще хотите платформу, взглянули на параллельные расширения.NET для идей.

1
ответ дан 3 December 2019 в 22:40
поделиться

Это зависит от того, в какой синхронизации Вы нуждаетесь. Если Вы хотите смочь выполнить поток в цикле, пока некоторый конец выполнения не достигнут - все, в чем Вы нуждаетесь, статическая bool переменная. Если Вы хотите, чтобы один поток ожидал, пока другой поток не достигает точки в выполнении, Вы могли бы хотеть использовать WaitEvents (AutoResetEvent или ManualResetEvent). Iflyyou должен ожидать нескольких waitHandles, можно использовать WaitHandle. WaitAll или WaitHandle. WaitAny.

1
ответ дан 3 December 2019 в 22:40
поделиться

Посмотрите на Систему. Время выполнения. Пространство имен дистанционной работы.

-2
ответ дан 3 December 2019 в 22:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: