Проблема, с которой вы столкнулись, связана с тем, как Windows Forms обрабатывает создание и отображение форм. Когда вы используете `Application.Run(new Form2())`, вы запускаете окно в своем собственном потоке с соответствующим циклом обработки событий, что является правильным подходом для работы с GUI.
Ваша проблема возникает из-за того, что при вызове `new Form2().Show()` вы не запускаете отдельный цикл обработки сообщений для нового окна. Вместо этого форма будет открыта в том же потоке, который используется, и могут возникнуть проблемы с обновлением графического интерфейса, особенно когда используется компонент, требующий большей обработки событий, как CefSharp.
Вот несколько рекомендаций для решения этой проблемы:
1. **Запустите Form2 с помощью `Application.Run`:**
Используйте `Application.Run(new Form2())`, как вы уже делали, чтобы запустить новую форму в отдельном потоке. Это обеспечит корректную обработку событий и обновление интерфейса.
```csharp
Thread _thread = new Thread(() => Application.Run(new Form2()));
_thread.Start();
```
2. **Создайте себе Control в том же потоке:**
Если вам все же нужно открывать окно в уже запущенном приложении, то можете попробовать использовать метод `ShowDialog` для открытия формы модально:
```csharp
var form2 = new Form2();
form2.ShowDialog(); // Эта форма откроется модально
```
3. **Белое пространство (с инициализацией CefSharp):**
Если вы хотите, чтобы Form2 работала с CefSharp и отображалась корректно, убедитесь, что вы правильно инициализируете его в контексте вот этого потока.
Если приведенные рекомендации не приводят к желаемому результату, рассмотрите возможность создания потокобезопасных вызовов с использованием `Invoke` или `BeginInvoke`, чтобы управлять форматированием формы на главном потоке. Например:
```csharp
this.Invoke((MethodInvoker)delegate {
new Form2().Show();
});
```
Это будет гарантировать, что изменения форм происходит в основном потоке GUI.