Tengo una aplicación de winform (un formulario), en este formulario hay un RichTextBox. En el constructor de este formulario creo una instancia de la clase MyClass
. En el "Form_Load" llamo al método Initialisation
desde la instancia MyClass
.BackgroundWorker - Operación entre hilos no válida
En la forma constructor
myClass = new MyClass(RichTextBox richTextBox);
En el Form_Load
myClass.Initialisation();
En el método Initialisation
, en un bucle, leí algunas parmeters hacen otras materias. Para no congelar la aplicación (porque algunas operaciones pueden demorar algunos segundos), utilizo un BackgroundWorker
. Lo uso así (ver el código a continuación).
Cuando ejecuto, me sale este error: operación de la Cruz-hilo no válido: ‘RichTextbox’ Control de accede desde un subproceso distinto del subproceso que se creó el.
¿Podría decirme cómo resolver esto? Trabajo perfecto cuando no acceda al 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){}
}
Esto funciona, gracias – mili