2

我已经开始玩 c# 交互了。在 Visual Studio 中,我能够使用以下代码创建一些窗口:

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

但是由于使用 csi.exe 的这个错误,我不得不做这样的事情才能看到一个窗口(我已经从 net.compiler nuget 包,工具目录运行可执行文件):

#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# 交互式视图中实现与此类似的行为。

4

1 回答 1

1

[已编辑]

嗨帕维尔,

这是一个答案(这次在 csi 中测试),基于:Launching a WPF Window in a separate Thread

#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();
于 2018-05-20T20:40:22.720 回答