Bir winform uygulaması (bir form) var, bu formda bir RichTextBox var. Bu formun yapıcısında, MyClass
sınıfının bir örneğini oluşturuyorum. “Form_Load” içinde, MyClass
örneğinden Initialisation
yöntemini arıyorum. Initialisation
yöntemde Form_LoadBackgroundWorker - Çapraz iş parçacığı geçerli değil
myClass.Initialisation();
, form kurucu
myClass = new MyClass(RichTextBox richTextBox);
olarak
, bir döngü içinde, bazı Parmeters diğer maddeleri yapmak okuyun. Uygulamayı dondurmamak için (bazı işlemler biraz zaman alabilir, bir kaç saniye), ben bir
BackgroundWorker
kullanıyorum. Bunu böyle kullanıyorum (aşağıdaki kod). Ben çalıştırdığınızda , bu hatayı alıyorum: Çapraz iplik operasyon değil geçerlidir: Denetim ‘richTextBox’ o oluşturulmuş parçacığı dışında başka bir iş parçacığı erişilebilir.
Bunu nasıl çözdüğümü söyleyebilir misiniz? öyle ki sadece UI iş parçacığı olarak UI bileşenlerini erişebilir - Normal parçacığı kurallarının vergisi yerine geçmez BackgroundWorker
kullanma richTextBox
public Class MyClass
{
static BackgroundWorker _bw;
public MyClass()
{
_bw = new BackgroundWorker
{
WorkerReportsProgress = true,
WorkerSupportsCancellation = true
};
_bw.DoWork += bw_DoWork;
_bw.ProgressChanged += bw_ProgressChanged;
_bw.RunWorkerCompleted += bw_RunWorkerCompleted;
}
static void bw_DoWork(object sender, DoWorkEventArgs e)
{
foreach (....)
{
if (....)
{
richtextBox.Text.AppendText("MyText");
}
}
e.Result = true;
}
static void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e){}
static void bw_ProgressChanged(object sender, ProgressChangedEventArgs e){}
}
Bu çalışma, teşekkürler – mili