проблема с загрузкой заставки - PullRequest
0 голосов
/ 24 февраля 2010
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 Ответ

2 голосов
/ 24 февраля 2010

Это, вероятно, означает, что ваш код инициализации выполняет одну длинную операцию, блокируя таким образом очередь сообщений. Вы должны сделать следующее:

  1. Поручить основному потоку разрешить обновления заставки (через DoEvents). Это следует делать периодически при выполнении инициализации.
  2. Отображение заставки в альтернативном потоке и обновление его состояния с помощью специальной процентной переменной, установленной из основного потока (который выполняет инициализацию).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...