`

wpf主进程信号处理

 
阅读更多
wpf主进程信号处理
public partial class Login : UserControl
    {
        public static EventWaitHandle ProgramStarted; 
        public Login()
        {
            InitializeComponent();
            ProgramStarted = new EventWaitHandle(false, EventResetMode.AutoReset);
            ThreadPool.RegisterWaitForSingleObject(ProgramStarted, OnProgramStarted, null, -1, false);
        }
        private void OnProgramStarted(object state, bool timeout)
        {
            Thread thread = new Thread(new ThreadStart(new Action(() =>
            {
                this.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (System.Threading.ThreadStart)delegate()
                {
                    //chuli
                });
            })));
            //因为是线程池通知主进程,必须在单线程单元ApartmentState.STA执行
            thread.SetApartmentState(ApartmentState.STA);
            thread.IsBackground = true;
            thread.Start();
        }
    }
分享到:
评论

相关推荐

    WPF:把一个进程当成控件加载到界面中.rar

    2. **实现通信机制**:建立一个IPC通道,让主进程(即WPF应用程序)和目标进程能够交换信息。这可能涉及到创建服务器端和客户端的实现,以及数据序列化和反序列化的逻辑。 3. **自定义控件**:在WPF中,你可以创建...

    两个exe之间发送消息

    这两个.exe程序通过特定的通信机制进行交互,传输数据或控制信号。 首先,我们需要理解`SendMessage`函数的工作原理。这个函数是Windows API的一部分,它允许一个窗口向另一个窗口发送消息,即使这两个窗口属于不同...

    GUI_THREAD界面多线程操作

    在`GuiThread`这个主题中,我们可以深入探讨如何在具体的编程环境中(如Java的Swing或JavaFX,Python的Tkinter,C#的WPF等)实现GUI界面的多线程操作,以及如何处理线程安全问题、避免死锁和饥饿等问题。理解并掌握...

    asp.net如何使用托盘控件

    6. 进程通信:在ASP.NET中,当需要触发托盘应用的某个功能时,可以通过启动或发送信号给已运行的进程来实现。例如,你可以使用`Process.GetProcessesByName()`找到运行的进程,然后发送自定义消息。 以上就是在ASP...

    C#实现的比较简单的双人俄罗斯方块

    在这个项目中,C#被用来编写游戏的主逻辑,包括对象定义、事件处理、数据结构等。了解C#的基本语法,如类、对象、方法、变量、条件语句、循环控制等,是理解代码的基础。 2. 游戏界面设计: 游戏界面通常由控制台...

    渐变颜色 进度条 多线程

    传统的进度条通常使用单一颜色来表示完成的进度,而渐变颜色的进度条则引入了视觉上的动态效果,使用户更容易感知到进程的变化。通过使用色彩过渡,可以从开始的颜色逐渐过渡到结束的颜色,这种变化不仅增加了视觉...

    模拟线程 C#

    线程允许一个进程中的多个部分并行运行,从而提高了系统资源的利用率和程序的性能。C#作为.NET框架的主要编程语言,提供了丰富的支持来创建和管理线程。 在“模拟线程 C#”这个主题中,我们将深入探讨如何使用C#来...

Global site tag (gtag.js) - Google Analytics