Блокируется форма после вызова функции метода

240
30 июля 2021, 09:50

У меня есть код такого рода:

private static StringBuilder building = new StringBuilder();
public static bool Starting(string path, string Code)
{  
   using (var pv = new CSharpCodeProvider(providerOptions))
   {
     pv.CompileAssemblyFromSource(parameters, Code); 
   }
   // Много кода ...
   if (File.Exists(path))
   {
      File.WriteAllText("Log.txt", building.ToString());
      return true;
   }
   else { return false; }
}

После запуска на кнопке UI замерает на несколько секунд.

Пробовал запустить в отдельном потоке Thread

var potinizialize = new Thread(() => { Starting("path", "code"); });
potinizialize.Start(); 
potinizialize.Join(); // нужно сделать ожидания завершения метода

Но даже это не помогло, форма всё ровно замерает на несколько секунд.

Какие есть возможные вариант использования? Чтобы форма не блокировалась.

Answer 1

Типичная проблема с забиванием UI потока. Вы, в первом случае забили его операций ввода-вывода. Во втором случае, вы, создали поток и синхронно ждете его окончания. Попробуйте это:

var potinizialize = new Thread(() => { Starting("path", "code"); });

заменить на:

await Task.Run(()=>{Starting("path", "code"); })
READ ALSO
Триггер MySQL AFTER UPDATE срабатывает при вставке записи в таблицу

Триггер MySQL AFTER UPDATE срабатывает при вставке записи в таблицу

Почему AFTER UPDATE триггер срабатывает при вставке новой записи в таблицу?

220
Проблема с mysql connect() и end() (node JS)

Проблема с mysql connect() и end() (node JS)

Сегодня весь вечер пытался решить дурацкую проблему с закрытием соединенияЕсть функция, которая запускается через setInterval (код будет ниже)

234
Сортировка по дате из строки. MySQL

Сортировка по дате из строки. MySQL

В таблице есть поле "Номер фактуры" вида AB/dd/mm/yyyy

159
Конвертация CSV в JSON на PHP

Конвертация CSV в JSON на PHP

Учусь конвертировать csv файлы в формат json на php(который тоже знаю не очень), большая просьба помочь с алгоритмоместь следующий csv фрагмент...

330