splashscreen加载麻烦

时间:2010-02-24 13:29:49

标签: c# .net winforms

for 0->100
                SplashScreen.SetCurrentTitle("Loading " + Math.Ceiling(procent).ToString() + "%");
                //SplashScreen.Instance.Invalidate(); doesn't helps :(
                Application.DoEvents();
                Thread.Sleep(20);

这是启动画面,但我只能看到1-> 18然后等待18-> 100但看不到:(

如何显示其他18-> 100:)

这个?

        public static BeginDisplay() : void
    {
        Instance.Visible = true;
        unless (Instance.Created)
        {
            Instance.CreateControl();
        }

        _=SetWindowPos(Instance.Handle, (HWND_TOPMOST :> IntPtr), 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
        alphaBlend = if(Instance.FadeIn) (15 :> byte) else (255 :> byte);
        Instance.SetBitmap((Instance.BackgroundImage :> Bitmap), alphaBlend);
        when (Instance.FadeIn)
        {
            mutable tmrFade : Timer = Timer();
            tmrFade.Interval = 10;
            tmrFade.Tick += EventHandler(_fadeTick);
            tmrFade.Start();
        }
        Instance.Show();
    }

1 个答案:

答案 0 :(得分:2)

这可能意味着您的初始化代码执行一个长操作,从而阻止了消息队列。你应该做以下事情:

  1. 指示主线程允许更新启动画面(通过DoEvents)。这应该在执行初始化时定期完成。
  2. 在备用线程中显示启动画面,并从主线程(执行初始化的线程)中设置的专用百分比变量更新其状态。