WPF в C# интерактивный (csi.exe)

Я начал играть с C# Interactive. В Visual Studio мне удалось создать какое-то окно со следующим кодом:

#r "PresentationFramework"
using System.Windows;
var w = new Window();
w.Show();

Однако из-за этой ошибки при использовании csi.exe мне пришлось сделать что-то подобное, чтобы увидеть окно (я запускаю исполняемый файл из пакета nuget net.compiler, каталога tools):

#r "PresentationFramework"
using System.Windows;
using System.Threading;
var t = new Thread(()=>{var w = new Window(); w.Show(); Thread.Sleep(2000);});
t.SetApartmentState(ApartmentState.STA);
t.Start();

Окно отображается во время работы потока, но я не уверен, как мне добиться такого же поведения в интерактивном представлении VS C#.

1 ответ

[Изменено]

Привет Павел,

Вот ответ (проверенный в CSI на этот раз), основанный на: Запуск окна WPF в отдельном потоке

#r "PresentationFramework"
#r "Microsoft.VisualStudio.Threading"

using System.Windows.Controls;
using System.Windows;
using System.Threading;

var newWindowThread = new Thread(new ThreadStart(() =>
{
    var tempWindow = new Window();
    var t = new TextBox() {Text = "test"};
    tempWindow.Content = t;
    tempWindow.Show();
    System.Windows.Threading.Dispatcher.Run();
}));


newWindowThread.SetApartmentState(ApartmentState.STA);
newWindowThread.IsBackground = true;
newWindowThread.Start();
Другие вопросы по тегам