Какво прави AutoResetEvent.Set()?

+9 гласа
107 прегледа
попитан 2016 април 4 от Viktor.Ivanov. (1,550 точки)

Ако направя следното:

private static System.Threading.AutoResetEvent event_2 = new System.Threading.AutoResetEvent(false);

и в Main сложа това:

event_2.Set();

 състоянието се променя от false на true?

Ако е така, значи ли, че AutoResetEventState = !AutoResetEventState? 

1 отговор

+1 глас
отговорени 2016 април 5 от valeri.hristov (7,340 точки)
Задава състоянието на този, който позволява на нишките да продължават изпълнението ако изпълняват Wait() на него.

Ако вече има чакащи нишки, на една ще се позволи да продължи и състоянието ще се промени на not set, така че всички други нишки ще са блокирани.

Ако няма текущи чакащи опашки, първата която изчаква ще бъде пусната,а последващите ще бъдат блокирани.

Същия механизъм е в други класове, наследени от EventWaitHandle, но автоматичното ресетване след пускане на нишка е различно от ManualResetEvent, както се разбира от имената.

Първоначалното състояние е зависи дали подаваш true или false в конструктура. Да подадеш true е все едно да извикаш Set() ведната след инициализацията,а да подадеш false е все едно да извикаш Reset() след конструктура.
коментиран 2016 април 8 от Nikola.Nikolov. (3,100 точки)
Супер изчерпателен отговор, благодаря ;)
...