У меня есть задача, которая работает в Form_Load случае UserControl в WinForms:Task вызывает странное поведение в случае Form_Load
private void ucDeviceInsert_Load(object sender, EventArgs e)
{
System.Threading.Tasks.Task getTBox = System.Threading.Tasks.Task.Run(async() =>
{
await AVeryLongRunningProccess();
});
pbImage.Image = Properties.Resources.Remove;
getTBox.Wait();
pbImage.Image = Properties.Resources.Insert;
btnNext.Visible = true;
tmrDeviceInsert.Enabled = true;
tmrDeviceInsert.Start();
}
private void tmrDeviceInsert_Tick(object sender, EventArgs e)
{
Next();
}
меняет образ окна изображения, чтобы сообщить пользователю прогресса в долгосрочном ходовой процесс. Эта часть работает нормально, однако кнопка не отображается, и таймер не запускается. Я прошел через код, и я могу подтвердить, что он работает без каких-либо проблем, что делает это еще более непонятным. Любые идеи, которые могут вызвать эту проблему?
Кстати, создание 'getTBox' может быть упрощено до' var getTBox = AVeryLongRunningProccess(); ' – Jacob
@Jacob no, что изменило бы поведение, первая синхронная часть' AVeryLongRunningProccess' будет запущена в потоке пользовательского интерфейса , 'var getTBox = Task.Run (() => AVeryLongRunningProccess())' будет упрощенной версией. –
Это правда, но если он скоро переходит в асинхронный, то этого должно быть достаточно. Вы правы, что если на фронте есть какой-то синхронный процессорный материал, это не будет нужным. – Jacob