. Нечетная замкнутая семантика. Net снова прослушивает меня.C#: Подождите, пока переменная станет ненулевой.
Я запускаю нить, дочерняя нить по очереди запускает форму. Родительский поток должен ждать, пока форма не будет создана.
Моя первая попытка была использовать монитор для просмотра переменной формы:
private void OpenForm()
{
if (FormThread == null)
{
Monitor.Enter(Form);
FormThread = new Thread(FormStub);
FormThread.SetApartmentState(ApartmentState.STA);
FormThread.Start();
Monitor.Wait(Form);
Monitor.Exit(Form);
}
}
private void FormStub()
{
Form = new ConnectorForm();
Monitor.Enter(Form);
Monitor.PulseAll(Form);
Monitor.Exit(Form);
Application.Run(Form);
}
... Это вызывает исключение. Ошибка Monitor.Enter(), так как Form == null.
Я мог бы легко создать фиктивное целое или что-то в этом роде (на самом деле я думаю, что я смогу обработать переменную FormThread), но мне было интересно, было ли более элегантное решение.
Это кажется быть именно примитивным, которого я искал. Я пропустил это, когда прочитал список вещей в System.Threading, по-видимому ... мои глазные яблоки искали «Событие» или что-то в этом роде. – Thanatos