У меня есть форма, которая запускает процесс инициализации установки кабины. Когда процесс создается и запускается, мой текущий пользовательский интерфейс зависает (у меня есть значок загрузки, запущенный с использованием таймера потока).Пользовательский интерфейс текущей формы замерзает при создании процесса инициализации установщика кабины
//When the form initializes, the following timer is created to start the animation
System.Threading.TimerCallback TimerDelegate = new System.Threading.TimerCallback(animationTimer);
timer = new System.Threading.Timer(TimerDelegate, null, 0, 100);
//After i started the following snippet to create a process to start cab installation, the animation freezes in my current Form
ProcessInfo pi = new ProcessInfo();
byte[] si = new byte[128];
string szImageName = "\\Windows\\wceload.exe";
string destPath = swPath;
string szCmdLine = @"/noaskdest /noui " + (char)34 + destPath + (char)34;
bool result = CreateProcess(szImageName, szCmdLine, IntPtr.Zero, IntPtr.Zero, false, 0, IntPtr.Zero, IntPtr.Zero, si, pi);
System.Threading.Thread.Sleep(100);
if (result == true)
{
int waitResult = 0;
waitResult = WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
label1.Text = "Update is complete. Rebooting device...";
label1.Refresh();
System.Threading.Thread.Sleep(1000);
SetSystemPowerState(IntPtr.Zero, 0x00800000, 0x00001000);
}
Как я могу обеспечить, чтобы анимация в моей текущей форме продолжала работать, в то же время запущенный процесс запущен? Пожалуйста, совет, спасибо.
Да, переключение createprocess в другой поток и создание триггера для уведомления моего основного потока пользовательского интерфейса после завершения процесса выполнения работ. – Ytan