开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 4082|回复: 0

[源码] Running a WPF window in a new thread

[复制链接]

0

精华

4

贡献

94

赞扬

帖子
61
软币
438
在线时间
32 小时
注册时间
2013-8-13
发表于 2013-11-14 20:58:54 | 显示全部楼层 |阅读模式
using System;
using System.Threading;
using System.Windows;
using System.Windows.Threading;

namespace Jarloo
{
    public class WindowManager
    {
        public static void LaunchWindowNewThread<T>() where T : Window, new()
        {
            Thread newWindowThread = new Thread(ThreadStartingPoint);
            newWindowThread.SetApartmentState(ApartmentState.STA);
            newWindowThread.IsBackground = true;

            Func<Window> f = delegate
                                 {
                                     T win = new T();
                                     return win;
                                 };

            newWindowThread.Start(f);
        }

        private static void ThreadStartingPoint(object t)
        {
            Func<Window> f = (Func<Window>) t;
            Window win = f();

            win.Show();
            Dispatcher.Run();
        }
    }
}


WindowManager.LaunchWindowNewThread<MainWindow>();


回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-12-23 13:41

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表