Лучший способ отслеживания нескольких окон в C# WinForms.C# WinForms, отслеживание окон
Например, у меня есть ApplicationContext
, который используется для управления моим приложением, и у меня есть метод, который использовался для открытия новых окон.
public void CreateWindow(RosterItem Roster)
{
//Check if it is already active, if so, Focus.
MessageWindow MessageWindow = new MessageWindow();
MessageWindow.SetContext(Roster);
MessageWindow.Initialize();
}
Это, как говорится, мне нужно проверить, если окно уже открыто, и если это сделать его сосредоточенным, в противном случае создать новое окно и фокусировать его.
Принимая во внимание Cross Thread.
Вопрос: Каков наилучший способ для этого.
Так что ваше высказывание, что я должен создать свою собственную коллекцию 'Key, value' и назначить UID для каждого окна, а затем использовать 'WindowCollection [UID] .Value.InvokeRequired', это лучший способ? Я не думаю, что мне нужен WindowCreate, поскольку у меня уже есть созданная форма, и ее инициирование в зависимости от значений Реестр. – RobertPitt
Я добавил несколько примеров кода, чтобы дать вам представление о процессе. Вы можете решить, что вы хотите использовать для ключа, но процесс тот же. – unholysampler
В качестве альтернативы вы можете обернуть доступ к коллекции форм и предоставить свою собственную блокировку. Кроме того, если у вас много отдельных потоков, как они собираются обмениваться формами? –