Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Запуск процесса в кнопке из отдельного потока / 6 сообщений из 6, страница 1 из 1
11.05.2018, 20:58
    #39643452
OlegEgorov11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск процесса в кнопке из отдельного потока
Как запустить из BackgroundWorker такой код?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
  ReadText();
            System.Diagnostics.Stopwatch swatch = new System.Diagnostics.Stopwatch(); 
            swatch.Start();
            this.Cursor = Cursors.WaitCursor;
       
            try{
               
            progressBar1.Minimum = 0;
            progressBar1.Maximum = 100;
            
            progressBar1.Visible = true;
            {
              progressBar1.Value = progressBar1.Minimum;
              System.Threading.Thread.Sleep(1);
             
            }
            
          

            using (SqlConnection connect = new SqlConnection(@"Server=" + textBox1.Text + ";Database=test;User Id=" + textBox2.Text + ";Password=" + textBox3.Text + ";"))
            {
                connect.Open();

                SqlCommand command = new SqlCommand(sql1, connect);
                command.CommandTimeout = 999;
                command.ExecuteNonQuery();
                {
                    progressBar1.Value = 30;
                    System.Threading.Thread.Sleep(1);
                }
              
                SqlCommand command2 = new SqlCommand(sql2, connect);
                command2.CommandTimeout = 999;
                command2.ExecuteNonQuery();
                {
                    progressBar1.Value = 70;
                    System.Threading.Thread.Sleep(1);
                }
                
                ProcessStartInfo psi;
                psi = new ProcessStartInfo("cmd", @"/c команда в cmd");
                psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                Process.Start(psi).WaitForExit();
               
                            }
            
             swatch.Stop();
             TimeSpan ts = swatch.Elapsed;
             string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}", ts.Hours, ts.Minutes, ts.Seconds);
                 progressBar1.Value = progressBar1.Maximum;
                 System.Threading.Thread.Sleep(1);
             
             
             
            MessageBox.Show(
 Затраченное время:" + elapsedTime + "",
"Выполнено",
MessageBoxButtons.OK,
MessageBoxIcon.Information,
MessageBoxDefaultButton.Button1);
          
           
        }
             catch{
                MessageBox.Show(
      "Проверьте параметры подключения к SQL-серверу",
      "Внимание",
      MessageBoxButtons.OK,
      MessageBoxIcon.Error,
      MessageBoxDefaultButton.Button1);
         }
           finally
{
            progressBar2.Style = ProgressBarStyle.Continuous;
            progressBar2.MarqueeAnimationSpeed = 0;
            this.Cursor = Cursors.Default;
            progressBar2.Visible = false;
            progressBar1.Visible = false;
}
        }



смысл в том, чтобы во время выполнения этого процесса, который занимает продолжительное время крутился progressbar.Marquee. То есть, когда нажимаю кнопку:
1. включается progressbar.Marquee;
2.выполняется процесс из потока;
3. останавливается progressbar.Marquee;
...
Рейтинг: 0 / 0
11.05.2018, 21:08
    #39643453
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск процесса в кнопке из отдельного потока
...
Рейтинг: 0 / 0
11.05.2018, 21:29
    #39643454
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск процесса в кнопке из отдельного потока
такой код не пройдет Code Review, даже с Async\Await
...
Рейтинг: 0 / 0
11.05.2018, 21:48
    #39643457
OlegEgorov11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск процесса в кнопке из отдельного потока
Roman Mejtes,

а можно как нибудь в нем запустить progressbar.Marquee?
...
Рейтинг: 0 / 0
11.05.2018, 21:49
    #39643459
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск процесса в кнопке из отдельного потока
Roman Mejtesтакой код не пройдет Code Review, даже с Async\Awaitвсе мы когда-то были начинающими ))

автору надо просто обновить учебники, а то они у него больно старые.... BackgroundWorker....
...
Рейтинг: 0 / 0
11.05.2018, 21:51
    #39643460
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск процесса в кнопке из отдельного потока
OlegEgorov11Roman Mejtes,

а можно как нибудь в нем запустить progressbar.Marquee?для того, чтобы на экране что-то происходило во время выполнения кода, нужно чтобы код выполнялся в отдельном потоке. Поэтому изучаем асинхронное программирование, без него сейчас никуда
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Запуск процесса в кнопке из отдельного потока / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]