Bir TPL Göreviyle başka bir iş parçacığında uzun bir işlem gerçekleştiren basit bir küçük winform uygulaması var. Bu uzun çalışma sürecinde UI'yi (ilerleme çubuğu veya bir şey) güncellemek istiyorum. Gerekli olmadan bunu yapmak için bir yolu var mı? Devam()?WinForms içindeki alt görevlerden kullanıcı arabirimi nasıl güncellenir
public partial class Form1 : Form
{
private Task _childTask;
public Form1()
{
InitializeComponent();
Task.Factory.StartNew(() =>
{
// Do some work
Thread.Sleep(1000);
// Update the UI
_childTask.Start();
// Do more work
Thread.Sleep(1000);
});
_childTask = new Task((antecedent) =>
{
Thread.Sleep(2000);
textBox1.Text = "From child task";
}, TaskScheduler.FromCurrentSynchronizationContext());
}
}
Ben her yerde istisna olsun bu kodu yürütülüyor:
Cross-thread operation not valid: Control 'textBox1' accessed from a thread other than the thread it was created on.
Metin kutusu başvurusunu iş parçacığına yapıştırmanız gerektiğini düşünüyorum. – jwillmer