Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在同一线程中启动SurfaceWidow和WPF窗口_C#_Wpf_Multithreading_Pixelsense - Fatal编程技术网

C# 在同一线程中启动SurfaceWidow和WPF窗口

C# 在同一线程中启动SurfaceWidow和WPF窗口,c#,wpf,multithreading,pixelsense,C#,Wpf,Multithreading,Pixelsense,我在多线程方面遇到了一个问题——我正在开发一个包含两个窗口的框架:一个SurfaceWindow和一个普通的wpfwindow 在我的第一次测试中,由于visualstudio项目的选择,SurfaceWindow自动启动,在我的Surface窗口的构造函数中,我启动了GUI。 两个窗口都有一个线程->无问题;) 我知道我必须改变顺序,我的起点是一个普通的.cs类,我在线程方面有困难。。。对我来说,完美的解决方案是首先从SurfaceWindow开始,然后是WPF窗口,但在同一线程中 但我不希望

我在多线程方面遇到了一个问题——我正在开发一个包含两个窗口的框架:一个SurfaceWindow和一个普通的wpfwindow

在我的第一次测试中,由于visualstudio项目的选择,SurfaceWindow自动启动,在我的Surface窗口的构造函数中,我启动了GUI。 两个窗口都有一个线程->无问题;)

我知道我必须改变顺序,我的起点是一个普通的.cs类,我在线程方面有困难。。。对我来说,完美的解决方案是首先从SurfaceWindow开始,然后是WPF窗口,但在同一线程中

但我不希望WPF窗口在SurfaceWindow的构造函数中启动,但效果相同

导致线程问题的代码: (调用线程无法访问此对象,因为该对象属于另一个线程。)

现在,代码将是完美的解决方案,但它没有显示WPFGUI:

 public Constructor()
    {

        Thread t = new Thread(new ThreadStart(StartSurfaceWIndowThread));
        t.SetApartmentState(ApartmentState.STA);
        t.Start();

        startWindow();

    }

    private void StartNewStaThread() {

        AdaptivePrototype.App app = new AdaptivePrototype.App();
        app.InitializeComponent();
        app.Run();
    WPFkGui w = new WPFGui(this);
        w.Show();

    }
我很高兴能得到任何帮助! 谢谢
Chris

我知道您希望在启动时显示两个窗口,并且能够相互交互。不需要花哨的线程代码

打开App.xaml文件。“StartupUri”有一个属性。删除它-这基本上是一个快捷方式,告诉WPF在应用程序启动时显示特定的窗口。。。您可以跳过此操作,并在自己的启动行为中编写代码。为此,下一步打开App.xaml.cs并插入以下内容:

        Window1 window1 = new Window1();
        Window2 window2 = new Window2(window1);

        window1.Show();
        window2.Show();
当然,这假定您的窗口类名为Window1和Window2,并且您向Window2添加了一个构造函数,该构造函数以Window1为实例

        Window1 window1 = new Window1();
        Window2 window2 = new Window2(window1);

        window1.Show();
        window2.Show();