单独线程上的启动画面隐藏了服务器响应

本文关键字:隐藏 服务器 响应 动画 线程 启动 单独 | 更新日期: 2023-09-27 18:01:18

我有一个提供30天免费试用的c# Windows程序。在此之后,用户必须购买该产品,否则将被锁定。当程序查询我的web服务器时,我制作了一个启动屏幕来占用用户,以查看用户是否在不购买程序的情况下篡改数据以试图让程序工作。

在我的Windows 8机器上(我使用的是。net Framework 3.5),启动屏幕出现得很好,然后消息框出现(在启动屏幕上方),给他们提供诸如"您的30天免费试用还剩2天"之类的信息。

然而,在我的XP机器上,消息框被启动屏幕隐藏了。关于如何SendToFront()的MessageBox或SendToBack()启动屏幕的任何想法?如果我只是尝试将启动屏幕上的表单发送到后台,这与将整个线程发送到后台是不同的。

下面是显示闪屏的代码:
static public void ShowSplashScreen() {
    // Make sure it's only launched once.
    if (ms_frmSplash != null)
        return;
    ms_oThread = new Thread(new ThreadStart(SplashScreen.ShowForm));
    ms_oThread.Name = "SplashScreenThread";
    ms_oThread.IsBackground = true;
    ms_oThread.SetApartmentState(ApartmentState.STA);
    ms_oThread.Start();
    while (ms_frmSplash == null || ms_frmSplash.IsHandleCreated == false) {
        System.Threading.Thread.Sleep(TIMER_INTERVAL);
    }
}

单独线程上的启动画面隐藏了服务器响应

没有看到你所有的代码,我认为发生的事情是这样的:您在与主GUI线程分离的线程上运行启动屏幕,然后从主GUI线程(或另一个线程)启动消息框。不同线程上的接口将独立地(读:不规律地)为它们的z轴顺序工作。尝试将GUI元素(启动屏幕和消息框)移到主线程中。在另一个线程上运行所有长时间运行的进程(您的服务器检查)

好的,我明白Servy和MikeH在说什么,但我担心的是,我做了一堆工作,它仍然不起作用。或者,它只是无法从一台机器预测到另一台机器。因此,我将采用的方法是增强启动屏幕,以便它显示来自服务器的结果,而不是在单独的窗口中显示结果。这样,就完全不用担心z轴顺序了……

谢谢你的想法,不过,我可能需要他们以后!