public partial class JobDataDuplicatorForm : Form
{
public JobDataDuplicatorForm(IJobDataDuplicatorEngine engine)
{
_engine.CopyStartedEvent += GetEventHandler(OnCopyStarted);
_engine.CopyEndedEvent += GetEventHandler(OnCopyEnded);
...
}
private static EventHandler GetEventHandler(Action action)
{
return (sender, args) => action();
}
private void OnCopyStarted()
{
copyStatus.Text = "Copy progress: ";
generateButton.Enabled = false; // Cross-thread operation not valid
}
}
Ich habe die folgende Ausnahme:Wie man threadsafe GetEventHandler() erstellt?
Additional information: Cross-thread operation not valid: Control
'generateButton' accessed from a thread other than the thread it was created on.
Kann ich die Ausnahme beheben, indem GetEventHandler()
Ändern anstatt jede Taste an verschiedenen Orten Umwickeln wie diese
Invoke((MethodInvoker)delegate { generateButton.Enabled = false; });
?
Wie kann ich das tun?
Sie rufen zufällig 'JobDataDuplicatorForm (IJobDataDuplicatorEngine engine)' von einem Hintergrund-Thread zunächst? –
Aktualisiert, sieht so aus, als würde ich immer die alte Variante ausführen. Aber wie?? – Anatoly
versuchen Sie gerade, die Tasten zu aktivieren und zu deaktivieren? – Sorceri