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

+9 гласа
37 прегледа
попитан 2016 април 4 в .NET от 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 точки)
Супер изчерпателен отговор, благодаря ;)
...