Form dışında başka bir sınıftan bir yöntem çağıran bir BackgroundWorker iş parçacığı bir etiket güncelleştirmeye çalışıyorum. Bu yüzden bunu yapmak istiyorum:BackgroundWorker iş parçacığı WinForms UI güncelleştirmesi
Ancak etiket özeldir. BackgroundWorker'ın progressupdate işlevini kullanmak, çağırmak vb. Gibi şeylere baktım ama ihtiyaç duyduğum gibi görünmüyorlar. Burada
kodumu bazıları daha fazlasıdır:
MainForm:
clickThread.DoWork += (s, o) => { theClicker.Execute(speed); };
clickThread.RunWorkerAsync();
denilen Sınıf/Yöntem: Ben aşırı benim kod biraz karmaşık düşünüyorum
public void Execute(int speed)
{
while (running)
{
Thread.Sleep(speed);
Mouse.DoMouseClick();
Counter++;
//Update UI here
}
}
: \ ve kendimi bir köşeye yedekledim.
, bunu ayarlamak için bir yöntem veya özellik gösteririm? – Hendry
Sorunu anlamak için: "TheClicker" nesnesinin MainForm'un özel etiketine erişimi yok, değil mi? Bu sorunu çözmenin gerçekten zayıf bir yolu, etiketi "TheClicker" ın Execute yöntemine iletmektir. – Shamshiel
BW'nin temelleri, "DoWork" içinden basit UI'ye erişemez. "ProgressChanged" öğesindeki "DoWork" ve UI öğelerindeki kullanıcı arabirimi dışı öğeleri yapın. –