我有一个C#Windows程序,提供30天的免费试用。之后,用户必须购买产品或将其锁定。当程序查询我的Web服务器时,我做了一个启动画面以占用用户,以查看用户是否篡改数据以尝试让程序运行而不购买它。独立线程上的初始屏幕隐藏服务器响应
在我的Windows 8机器上(我使用.Net Framework 3.5),启动画面很好地显示出来,然后MessageBox出现(在闪屏上方),给他们提供信息,如“30天免费审判还剩2天“。
但是,在我的XP机器上,MessageBox被启动画面隐藏。关于如何我可以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);
}
}
某些源代码对于诊断问题确实有帮助。 – Pseudonym
您是否正在运行主GUI线程的启动画面和消息框? – MikeH
我用这个为http://www.codeproject.com/Articles/5454/A-Pretty-Good-Splash-Screen-in-C。它从一个单独的线程运行启动画面。我将ShowSplashScreen()的代码添加到原始问题中......谢谢! – Chuck