0

Из-за большого кол-ва кода, у меня зависает форма (пишу на winforms). Я решил разбить на потоки, но не получается. Привожу часть кода.

public Form1()
        {           
            InitializeComponent();
            textBox1.ScrollBars = ScrollBars.Vertical;
            pictureBox1.Image = Image.FromFile(Environment.CurrentDirectory+ "/Images/face.gif");
            pictureBox2.Image = Image.FromFile(Environment.CurrentDirectory+ "/Images/sss.gif");

            Thread thread1 = new Thread(Encrypt); //именно здесь есть недопонимание
            thread1.Priority = ThreadPriority.Highest;    
            thread1.Start();                
        }

string Encrypt(string text)
        {            
            StringBuilder binary = new StringBuilder();
            for (int i = 0; i < text.Length; i++)
            {
                binary.Append(Convert.ToString(text[i], 2).PadLeft(8, '0'));
            }
            return binary.ToString();
        }

К слову, я вообще не понимаю, как все правильно сделать. Форма зависает и не двигается. Думал, что из-за гиф форма перегружается, но нет.

Как я понял, не получается использовать эту строку:

Thread thread1 = new Thread(Encrypt);

Из-за типа string в функции Encrypt.

Encrypt потом используется здесь:

public string Venom()
        { 
            return Encrypt(textBox1.Text);
        }

        public string Papanya()
        { //KEY 2
            return Encrypt(textBox3.Text);
        }

А потом здесь:

 static char GetChar(string Papanya, ref int lastIndex)
        {
            if (++lastIndex >= Papanya.Length)
                lastIndex = 0;
            return Papanya[lastIndex];
        }


public static string PairConcat(string Encrypt, string venom)
        {
            StringBuilder result = new StringBuilder();
            int index = -1;
            for (int i = 0; i < venom.Length; i++)
            {
                result.Append(venom[i]);
                result.Append(GetNextChar(Encrypt, ref index));
            }
            return result.ToString();
        }
Lucy
  • 89
  • 1
    метод научного тыка тут мало поможет, необходима отладка – Stranger in the Q Apr 25 '19 at 16:18
  • 1
    Куда должно попасть то, что возвращает метод Encrypt, и откуда возьмется его параметр text? –  Apr 25 '19 at 16:19
  • Igor, я дополнил вопрос – Lucy Apr 25 '19 at 16:25
  • 1
    По-моему, давать worker-thread'у высший приоритет - не лучшая идея. Он будет блокировать поток с UI и пользователь увидит зависание. – trollingchar Apr 25 '19 at 16:33
  • 1
    У вас действительно в реальном коде есть имена Venom и Papanya? Что такие имена дадут понять? А также textBox1, textBox3. – Alexander Petrov Apr 25 '19 at 16:37
  • 1
    Для начала, разбейте вопрос на два: как передать в поток параметр и как использовать поток, чтобы не зависал GUI. – Alexander Petrov Apr 25 '19 at 16:38

0 Answers0