WPF в C # интерактивный (csi.exe) - PullRequest
0 голосов
/ 20 мая 2018

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

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

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

#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();

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

1 Ответ

0 голосов
/ 20 мая 2018

[Отредактировано]

Привет Paweł,

Вот ответ (проверенный в 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();
...