Cześć wszystkim,
Opowiem może krótko mój problem:
W pracy potrzebny nam jest taki pasek informacyjny (NEWS TICKER). I zgłosiłem się, że może uda mi się napisać coś takiego.
(udało mi się znaleźć taki program TEXT TICKER 2.4, ale nie obsługuje polskich i ukraińskich znaków, a jest to potrzebne)

Program miałby wyglądać na takiej zasadzie, że z pliku bierze tekst -> wstawia w label -> i wszystko się przesuwa w lewo.

  • do tego żeby co jakiś okres czasu sprawdzał czy nie zmienił się tekst w pliku. Tak to sobie wymyśliłem.

i udało mi się takie cudo stworzyć.
Problem polega na tym, że krótkie zdania działają płynnie, ale gdy już dochodzi do dłuższych zdań to program strasznie zwalnia tzn. o wiele wolniej się przesuwa pasek.
Nie wiem co jest tego powodem. Czy w złym miejscu otwieram pliki i timer tak spowalnia program ?

Program tworzyłem w Visual Studia 2015 w Windows Formsach.

liczę na pomoc i pozdrawiam :)

ps: próbowałem stworzyć wątek według : https://4programmers.net/Forum/Newbie/219994-prosby_o_sprawdzenie_kodu_

        public Komunikacja()
        {

            InitializeComponent();
                  
            this.TopMost = true;
            tmScroll.Start();
     
        }
     
   
        private void timer1_Tick(object sender, EventArgs e)
        {
            string path = "tekst.txt";
            string readText = File.ReadAllText(path, Encoding.Default);
            int length = readText.Length;

            label1.Text = readText;
        }

              private void tmScroll_Tick(object sender, EventArgs e)
        {
        Label1:
            
            int x = Int32.Parse(label1.Text.Length.ToString());

            int dl = (1050-(90*x)-500);   // nie umiałem  wykminić jak zrobić, że gdy tekst minie ekran, to żeby się pojawił od początku
            if (dl > 0)       // policzyłem mniej więcej ile pikseli na literkę przypada plus. jakaś przerwa i działa tak na 2+
                dl = -100;                   // więc jeśli ktoś zna lepszy sposób to z chęcią skorzystam, ale jest to mniej priorytetowe 
           
                if (label1.Location.X == dl)
                {
                
                    label1.Location = new Point(1050, -17);
                    goto Label1;

                }
                else

                    label1.Location = new Point(label1.Location.X - 5, label1.Location.Y);
        }
    }
    }