i am helped by this link -How to remove all event handlers from a control
yep i succeed remove all event handler from control and form.
but i have failed in BackgroundWorker.
this is my code.
void ReadingCompleted()
{
//find fields
List<FieldInfo> liField=typeof(BackgroundWorker).GetFields(BindingFlags.Static | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Public).ToList();
foreach(FieldInfo field in liField)
{
txtbox_log.Text += field.Name + "\r\n";
}
//below output list
//canCancelWorker
//workerReportsProgress
//cancellationPending
//isRunning
//asyncOperation
//threadStart
//operationCompleted
//progressReporter
//doWorkKey
//runWorkerCompletedKey
//progressChangedKey
//remove all eventhandler
object key = typeof(BackgroundWorker).GetField("doWorkKey", BindingFlags.NonPublic | BindingFlags.Static);
EventHandlerList events = (EventHandlerList)typeof(Component)
.GetProperty("Events", BindingFlags.NonPublic | BindingFlags.Instance)
.GetValue(this, null);
events.RemoveHandler(key, events[key]);
waitForm.Close();
}
Aucun commentaire:
Enregistrer un commentaire